util-helpers 4.18.1 → 4.19.0

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/esm/VERSION.js CHANGED
@@ -1,4 +1,4 @@
1
- var VERSION = "4.18.1";
1
+ var VERSION = "4.19.0";
2
2
  var VERSION$1 = VERSION;
3
3
 
4
4
  export { VERSION$1 as default };
package/esm/index.js CHANGED
@@ -43,6 +43,7 @@ export { default as round } from './round.js';
43
43
  export { default as ajax } from './ajax.js';
44
44
  export { default as calculateCursorPosition } from './calculateCursorPosition.js';
45
45
  export { default as download } from './download.js';
46
+ export { default as loadScript } from './loadScript.js';
46
47
  export { default as randomString } from './randomString.js';
47
48
  export { default as strlen } from './strlen.js';
48
49
  export { default as waitTime } from './waitTime.js';
@@ -56,6 +57,6 @@ export { default as findTreeSelect } from './findTreeSelect.js';
56
57
  export { setDisableWarning } from './utils/config.js';
57
58
  export { default as VERSION } from './VERSION.js';
58
59
 
59
- var version = "4.18.1";
60
+ var version = "4.19.0";
60
61
 
61
62
  export { version };
@@ -0,0 +1,39 @@
1
+ import { __rest, __assign } from 'tslib';
2
+
3
+ function loadScript(src, options) {
4
+ return new Promise(function (resolve, reject) {
5
+ var head = document.head;
6
+ var script = document.createElement('script');
7
+ var _a = options || {}, attrs = _a.attrs, _b = _a.destroyOnError, destroyOnError = _b === void 0 ? true : _b, restOptions = __rest(_a, ["attrs", "destroyOnError"]);
8
+ var props = __assign(__assign({ async: true, type: 'text/javascript' }, restOptions), { src: src });
9
+ for (var key in props) {
10
+ if (key === 'onload' || key === 'onerror') {
11
+ continue;
12
+ }
13
+ script[key] = props[key];
14
+ }
15
+ if (typeof attrs === 'object') {
16
+ Object.keys(attrs).forEach(function (key) {
17
+ script.setAttribute(key, attrs[key]);
18
+ });
19
+ }
20
+ script.onload = function (ev) {
21
+ var _a;
22
+ this.onerror = this.onload = null;
23
+ (_a = props.onload) === null || _a === void 0 ? void 0 : _a.call(this, ev);
24
+ resolve(script);
25
+ };
26
+ script.onerror = function (ev) {
27
+ var _a;
28
+ this.onerror = this.onload = null;
29
+ (_a = props.onerror) === null || _a === void 0 ? void 0 : _a.call(this, ev);
30
+ if (destroyOnError) {
31
+ head.removeChild(script);
32
+ }
33
+ reject(new URIError('Failed to load ' + this.src));
34
+ };
35
+ head.appendChild(script);
36
+ });
37
+ }
38
+
39
+ export { loadScript as default };
package/lib/VERSION.js CHANGED
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var VERSION = "4.18.1";
3
+ var VERSION = "4.19.0";
4
4
  var VERSION$1 = VERSION;
5
5
 
6
6
  module.exports = VERSION$1;
package/lib/index.js CHANGED
@@ -45,6 +45,7 @@ var round = require('./round.js');
45
45
  var ajax = require('./ajax.js');
46
46
  var calculateCursorPosition = require('./calculateCursorPosition.js');
47
47
  var download = require('./download.js');
48
+ var loadScript = require('./loadScript.js');
48
49
  var randomString = require('./randomString.js');
49
50
  var strlen = require('./strlen.js');
50
51
  var waitTime = require('./waitTime.js');
@@ -58,7 +59,7 @@ var findTreeSelect = require('./findTreeSelect.js');
58
59
  var config = require('./utils/config.js');
59
60
  var VERSION = require('./VERSION.js');
60
61
 
61
- exports.version = "4.18.1";
62
+ exports.version = "4.19.0";
62
63
 
63
64
  exports.isMobile = isMobile;
64
65
  exports.isTelephone = isTelephone;
@@ -105,6 +106,7 @@ exports.round = round;
105
106
  exports.ajax = ajax;
106
107
  exports.calculateCursorPosition = calculateCursorPosition;
107
108
  exports.download = download;
109
+ exports.loadScript = loadScript;
108
110
  exports.randomString = randomString;
109
111
  exports.strlen = strlen;
110
112
  exports.waitTime = waitTime;
@@ -0,0 +1,41 @@
1
+ 'use strict';
2
+
3
+ var tslib = require('tslib');
4
+
5
+ function loadScript(src, options) {
6
+ return new Promise(function (resolve, reject) {
7
+ var head = document.head;
8
+ var script = document.createElement('script');
9
+ var _a = options || {}, attrs = _a.attrs, _b = _a.destroyOnError, destroyOnError = _b === void 0 ? true : _b, restOptions = tslib.__rest(_a, ["attrs", "destroyOnError"]);
10
+ var props = tslib.__assign(tslib.__assign({ async: true, type: 'text/javascript' }, restOptions), { src: src });
11
+ for (var key in props) {
12
+ if (key === 'onload' || key === 'onerror') {
13
+ continue;
14
+ }
15
+ script[key] = props[key];
16
+ }
17
+ if (typeof attrs === 'object') {
18
+ Object.keys(attrs).forEach(function (key) {
19
+ script.setAttribute(key, attrs[key]);
20
+ });
21
+ }
22
+ script.onload = function (ev) {
23
+ var _a;
24
+ this.onerror = this.onload = null;
25
+ (_a = props.onload) === null || _a === void 0 ? void 0 : _a.call(this, ev);
26
+ resolve(script);
27
+ };
28
+ script.onerror = function (ev) {
29
+ var _a;
30
+ this.onerror = this.onload = null;
31
+ (_a = props.onerror) === null || _a === void 0 ? void 0 : _a.call(this, ev);
32
+ if (destroyOnError) {
33
+ head.removeChild(script);
34
+ }
35
+ reject(new URIError('Failed to load ' + this.src));
36
+ };
37
+ head.appendChild(script);
38
+ });
39
+ }
40
+
41
+ module.exports = loadScript;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "util-helpers",
3
- "version": "4.18.1",
3
+ "version": "4.19.0",
4
4
  "description": "一个基于业务场景的工具方法库",
5
5
  "main": "lib/index.js",
6
6
  "module": "esm/index.js",
package/types/index.d.ts CHANGED
@@ -100,6 +100,7 @@ export { default as round } from './round';
100
100
  export { default as ajax } from './ajax';
101
101
  export { default as calculateCursorPosition } from './calculateCursorPosition';
102
102
  export { default as download } from './download';
103
+ export { default as loadScript } from './loadScript';
103
104
  export { default as randomString } from './randomString';
104
105
  export { default as strlen } from './strlen';
105
106
  export { default as waitTime } from './waitTime';
@@ -0,0 +1,30 @@
1
+ type ScriptAttribute = Pick<HTMLScriptElement, 'async' | 'crossOrigin' | 'defer' | 'integrity' | 'noModule' | 'referrerPolicy' | 'text' | 'type' | 'onload' | 'onerror' | 'id' | 'className'> & {
2
+ attrs: Record<string, string>;
3
+ destroyOnError: boolean;
4
+ };
5
+ /**
6
+ * 加载 js 文件。
7
+ *
8
+ * 默认属性 `async=true` `type=text/javascript` 。如果加载失败,默认会删除该 `script` 的 `dom` 标签。
9
+ *
10
+ * <em style="font-weight: bold;">注意:该方法仅适用于浏览器端。</em>
11
+ *
12
+ * @static
13
+ * @alias module:Other.loadScript
14
+ * @since 4.19.0
15
+ * @param {string} src js 地址。
16
+ * @param {Object} [options] script 标签属性。比如 `async` `defer` `onload` `onerror` `id` 等。如果需要设置属性,可以使用 `attrs` 。如果加载失败或错误不想删除,可以使用 `destroyOnError=false` 。
17
+ * @return {Promise<HTMLScriptElement>} 异步返回 script 元素。
18
+ * @example
19
+ *
20
+ * loadScript('some.js').then(script=>{
21
+ * // do something
22
+ * })
23
+ *
24
+ * loadScript('some.js', { id: 'xxx', async: false, attrs: { foo: 'bar' } }).then(script=>{
25
+ * // do something
26
+ * })
27
+ *
28
+ */
29
+ declare function loadScript(src: string, options?: Partial<ScriptAttribute>): Promise<HTMLScriptElement>;
30
+ export default loadScript;