@alicloud/alfa-react 1.3.4-alpha.1 → 1.4.0-alpha.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.
@@ -25,7 +25,7 @@ var ErrorBoundary = /*#__PURE__*/function (_React$Component) {
25
25
  _this = _super.call(this, props);
26
26
  _this.state = {
27
27
  hasError: false,
28
- error: null
28
+ error: undefined
29
29
  };
30
30
  return _this;
31
31
  }
@@ -46,8 +46,9 @@ var ErrorBoundary = /*#__PURE__*/function (_React$Component) {
46
46
  isFunction((_window = window) === null || _window === void 0 ? void 0 : (_window$__bl = _window.__bl) === null || _window$__bl === void 0 ? void 0 : _window$__bl.error) && ((_window2 = window) === null || _window2 === void 0 ? void 0 : (_window2$__bl = _window2.__bl) === null || _window2$__bl === void 0 ? void 0 : _window2$__bl.error(error, errorInfo)); // You can also log the error to an error reporting service in appDidCatch
47
47
 
48
48
  appDidCatch && appDidCatch(error, errorInfo);
49
- logger === null || logger === void 0 ? void 0 : logger.error({
50
- E_MSG: '',
49
+ (logger === null || logger === void 0 ? void 0 : logger.error) && logger.error({
50
+ E_CODE: 'RuntimeError',
51
+ E_MSG: error.message,
51
52
  E_STACK: error,
52
53
  C_STACK: errorInfo
53
54
  });
@@ -58,7 +59,8 @@ var ErrorBoundary = /*#__PURE__*/function (_React$Component) {
58
59
  var error = this.state.error;
59
60
 
60
61
  if (this.state.hasError) {
61
- // You can render any custom fallback UI
62
+ if (this.props.fallbackRender) return this.props.fallbackRender(error); // You can render any custom fallback UI
63
+
62
64
  return /*#__PURE__*/React.createElement(ErrorPanel, {
63
65
  error: error
64
66
  });
@@ -11,6 +11,7 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
11
11
  import React, { useRef, useEffect, useState, useMemo } from 'react';
12
12
  import Loading from './components/Loading';
13
13
  import { normalizeName } from './utils';
14
+ import { version as loaderVersion } from './version';
14
15
 
15
16
  /**
16
17
  * container for microApp mount
@@ -44,17 +45,23 @@ export default function createApplication(loader) {
44
45
  app = _useState2[0],
45
46
  setApp = _useState2[1];
46
47
 
47
- var appRef = useRef(null);
48
+ var _useState3 = useState(null),
49
+ _useState4 = _slicedToArray(_useState3, 2),
50
+ setError = _useState4[1];
51
+
52
+ var appRef = useRef(undefined);
48
53
  var tagName = normalizeName(props.name);
49
54
  var sandbox = useMemo(function () {
50
55
  return _objectSpread(_objectSpread({}, customSandbox), {}, {
51
- allowResources: [].concat(_toConsumableArray((customSandbox === null || customSandbox === void 0 ? void 0 : customSandbox.allowResources) || []), [/^https?:\/\/at\.alicdn\.com\//]),
56
+ // allowResources: [
57
+ // ...(customSandbox?.allowResources || []),
58
+ // /^https?:\/\/at\.alicdn\.com\//,
59
+ // ],
52
60
  externalsVars: [].concat(_toConsumableArray((customSandbox === null || customSandbox === void 0 ? void 0 : customSandbox.externalsVars) || []), [// global vars used in ConsoleBase.forApp
53
61
  '_console_base_ready_'])
54
62
  });
55
63
  }, [customSandbox]);
56
64
  useEffect(function () {
57
- // eslint-disable-next-line no-useless-catch
58
65
  _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee() {
59
66
  var _yield$loader$registe, App, logger;
60
67
 
@@ -62,15 +69,7 @@ export default function createApplication(loader) {
62
69
  while (1) {
63
70
  switch (_context.prev = _context.next) {
64
71
  case 0:
65
- if (!app) {
66
- _context.next = 2;
67
- break;
68
- }
69
-
70
- return _context.abrupt("return");
71
-
72
- case 2:
73
- _context.next = 4;
72
+ _context.next = 2;
74
73
  return loader.register({
75
74
  entry: entry,
76
75
  url: url,
@@ -90,47 +89,51 @@ export default function createApplication(loader) {
90
89
  beforeUpdate: beforeUpdate
91
90
  });
92
91
 
93
- case 4:
92
+ case 2:
94
93
  _yield$loader$registe = _context.sent;
95
94
  App = _yield$loader$registe.app;
96
95
  logger = _yield$loader$registe.logger;
97
96
 
98
97
  if (App) {
99
- _context.next = 9;
98
+ _context.next = 7;
100
99
  break;
101
100
  }
102
101
 
103
- return _context.abrupt("return", logger === null || logger === void 0 ? void 0 : logger.error({
102
+ return _context.abrupt("return", (logger === null || logger === void 0 ? void 0 : logger.error) && logger.error({
103
+ E_CODE: 'RuntimeError',
104
104
  E_MSG: 'load app failed.'
105
105
  }));
106
106
 
107
- case 9:
107
+ case 7:
108
108
  if (appRef.current) {
109
- _context.next = 11;
109
+ _context.next = 9;
110
110
  break;
111
111
  }
112
112
 
113
- return _context.abrupt("return", logger === null || logger === void 0 ? void 0 : logger.error({
113
+ return _context.abrupt("return", (logger === null || logger === void 0 ? void 0 : logger.error) && logger.error({
114
+ E_CODE: 'RuntimeError',
114
115
  E_MSG: 'cannot find container.'
115
116
  }));
116
117
 
117
- case 11:
118
- _context.next = 13;
118
+ case 9:
119
+ _context.next = 11;
119
120
  return App.mount(appRef.current, {
120
121
  customProps: customProps
121
122
  });
122
123
 
123
- case 13:
124
+ case 11:
124
125
  setApp(App);
125
126
 
126
- case 14:
127
+ case 12:
127
128
  case "end":
128
129
  return _context.stop();
129
130
  }
130
131
  }
131
132
  }, _callee);
132
133
  }))().catch(function (e) {
133
- throw e;
134
+ setError(function () {
135
+ throw e;
136
+ });
134
137
  });
135
138
 
136
139
  return function () {
@@ -142,15 +145,21 @@ export default function createApplication(loader) {
142
145
  app.update(customProps);
143
146
  }
144
147
 
148
+ var dataAttrs = {
149
+ 'data-id': version,
150
+ 'data-version': version,
151
+ 'data-loader': loaderVersion
152
+ };
145
153
  return /*#__PURE__*/React.createElement(React.Fragment, null, !app ? /*#__PURE__*/React.createElement(Loading, {
146
154
  loading: loading
147
- }) : null, sandbox && sandbox.disableFakeBody ? /*#__PURE__*/React.createElement(tagName, {
155
+ }) : null, sandbox && sandbox.disableFakeBody ? /*#__PURE__*/React.createElement(tagName, _objectSpread({
148
156
  style: style,
149
157
  className: className,
150
- ref: appRef,
151
- dataId: name
152
- }) : /*#__PURE__*/React.createElement(tagName, {}, /*#__PURE__*/React.createElement('div', {
153
158
  ref: appRef
159
+ }, dataAttrs)) : /*#__PURE__*/React.createElement(tagName, _objectSpread({}, dataAttrs), /*#__PURE__*/React.createElement('div', {
160
+ ref: appRef,
161
+ style: style,
162
+ className: className
154
163
  })));
155
164
  };
156
165
  }
@@ -7,8 +7,9 @@ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (O
7
7
 
8
8
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
9
9
 
10
- import { getLocale } from '@alicloud/alfa-core';
11
- import { getConsoleConfig } from '../utils/getConsoleConfig'; // inject consoleConfig & locales after load
10
+ import { getConfig, getLocale } from '@alicloud/alfa-core';
11
+ import { getConsoleConfig } from '../utils/getConsoleConfig';
12
+ import { getConsoleGlobal } from '../utils/getConsoleGlobal'; // inject consoleConfig & locales after load
12
13
 
13
14
  function afterLoadHook(_x) {
14
15
  return _afterLoadHook.apply(this, arguments);
@@ -16,7 +17,7 @@ function afterLoadHook(_x) {
16
17
 
17
18
  function _afterLoadHook() {
18
19
  _afterLoadHook = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(appConfig) {
19
- var app, logger, defaultConsoleConfig, CONFIG_START_TIME, _yield$Promise$all$ca, _yield$Promise$all$ca2, consoleConfig, messages, CONFIG_END_TIME, i18nMessages, END_TIME;
20
+ var app, logger, defaultConsoleConfig, defaultConsoleGlobal, CONFIG_START_TIME, configData, _yield$Promise$all, _yield$Promise$all2, consoleConfig, consoleGlobal, messages, CONFIG_END_TIME, i18nMessages, END_TIME;
20
21
 
21
22
  return _regeneratorRuntime.wrap(function _callee$(_context) {
22
23
  while (1) {
@@ -24,39 +25,41 @@ function _afterLoadHook() {
24
25
  case 0:
25
26
  app = appConfig.app, logger = appConfig.logger;
26
27
  defaultConsoleConfig = window.ALIYUN_CONSOLE_CONFIG || {};
28
+ defaultConsoleGlobal = window.ALIYUN_CONSOLE_GLOBAL || {};
27
29
  CONFIG_START_TIME = Date.now();
28
- _context.next = 5;
29
- return Promise.all([getConsoleConfig(appConfig, defaultConsoleConfig), getLocale(appConfig)]).catch(function (e) {
30
- logger === null || logger === void 0 ? void 0 : logger.error({
31
- E_MSG: 'fetch config & locale error.',
32
- E_STACK: e
33
- });
34
- return [{}, {}];
35
- });
30
+ _context.next = 6;
31
+ return getConfig(appConfig);
32
+
33
+ case 6:
34
+ configData = _context.sent;
35
+ _context.next = 9;
36
+ return Promise.all([getConsoleConfig(configData, defaultConsoleConfig), getConsoleGlobal(configData, defaultConsoleGlobal), getLocale(appConfig)]);
36
37
 
37
- case 5:
38
- _yield$Promise$all$ca = _context.sent;
39
- _yield$Promise$all$ca2 = _slicedToArray(_yield$Promise$all$ca, 2);
40
- consoleConfig = _yield$Promise$all$ca2[0];
41
- messages = _yield$Promise$all$ca2[1];
38
+ case 9:
39
+ _yield$Promise$all = _context.sent;
40
+ _yield$Promise$all2 = _slicedToArray(_yield$Promise$all, 3);
41
+ consoleConfig = _yield$Promise$all2[0];
42
+ consoleGlobal = _yield$Promise$all2[1];
43
+ messages = _yield$Promise$all2[2];
42
44
  CONFIG_END_TIME = Date.now();
43
- i18nMessages = _objectSpread(_objectSpread({}, window.ALIYUN_CONSOLE_I18N_MESSAGE), messages);
45
+ i18nMessages = _objectSpread(_objectSpread({}, window.ALIYUN_CONSOLE_I18N_MESSAGE), messages); // inject global variables
44
46
 
45
47
  if (app && app.context) {
46
48
  app.context.window.ALIYUN_CONSOLE_CONFIG = consoleConfig;
47
- app.context.window.ALIYUN_CONSOLE_I18N_MESSAGE = i18nMessages; // (app.context.history as any) = {};
49
+ app.context.window.ALIYUN_CONSOLE_GLOBAL = consoleGlobal;
50
+ app.context.window.ALIYUN_CONSOLE_I18N_MESSAGE = i18nMessages;
48
51
  }
49
52
 
50
53
  END_TIME = Date.now();
51
- logger === null || logger === void 0 ? void 0 : logger.record({
54
+ (logger === null || logger === void 0 ? void 0 : logger.record) && logger.record({
52
55
  CONFIG_START_TIME: CONFIG_START_TIME,
53
56
  CONFIG_END_TIME: CONFIG_END_TIME,
54
57
  END_TIME: END_TIME
55
58
  });
56
- logger === null || logger === void 0 ? void 0 : logger.send();
59
+ (logger === null || logger === void 0 ? void 0 : logger.send) && logger.send();
57
60
  return _context.abrupt("return", appConfig);
58
61
 
59
- case 16:
62
+ case 21:
60
63
  case "end":
61
64
  return _context.stop();
62
65
  }
@@ -10,30 +10,21 @@ function beforeResolveHook(_x) {
10
10
 
11
11
  function _beforeResolveHook() {
12
12
  _beforeResolveHook = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(appConfig) {
13
- var resolvedManifest, logger, START_TIME, MANIFEST_START_TIME, MANIFEST_END_TIME;
13
+ var logger, START_TIME, MANIFEST_START_TIME, resolvedManifest, MANIFEST_END_TIME;
14
14
  return _regeneratorRuntime.wrap(function _callee$(_context) {
15
15
  while (1) {
16
16
  switch (_context.prev = _context.next) {
17
17
  case 0:
18
- resolvedManifest = appConfig.manifest;
19
18
  logger = appConfig.logger;
20
19
  START_TIME = Date.now();
21
20
  MANIFEST_START_TIME = Date.now();
22
-
23
- if (resolvedManifest) {
24
- _context.next = 8;
25
- break;
26
- }
27
-
28
- _context.next = 7;
21
+ _context.next = 5;
29
22
  return getManifest(appConfig);
30
23
 
31
- case 7:
24
+ case 5:
32
25
  resolvedManifest = _context.sent;
33
-
34
- case 8:
35
26
  MANIFEST_END_TIME = Date.now();
36
- logger === null || logger === void 0 ? void 0 : logger.record({
27
+ (logger === null || logger === void 0 ? void 0 : logger.record) && logger.record({
37
28
  LOADER_VERSION: LOADER_VERSION,
38
29
  START_TIME: START_TIME,
39
30
  MANIFEST_START_TIME: MANIFEST_START_TIME,
@@ -42,7 +33,7 @@ function _beforeResolveHook() {
42
33
  appConfig.manifest = resolvedManifest;
43
34
  return _context.abrupt("return", appConfig);
44
35
 
45
- case 12:
36
+ case 10:
46
37
  case "end":
47
38
  return _context.stop();
48
39
  }
@@ -6,7 +6,6 @@ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (O
6
6
 
7
7
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
8
8
 
9
- import { getConfig } from '@alicloud/alfa-core';
10
9
  import md5 from 'crypto-js/md5';
11
10
  /**
12
11
  * transform
@@ -14,12 +13,13 @@ import md5 from 'crypto-js/md5';
14
13
  */
15
14
 
16
15
  var processFeatures = function processFeatures(features) {
16
+ if (!features) return {};
17
17
  return Object.keys(features).reduce(function (newFeatures, key) {
18
18
  var _ALIYUN_CONSOLE_CONFI;
19
19
 
20
- var feature = features[key];
20
+ var feature = features === null || features === void 0 ? void 0 : features[key];
21
21
  if (!feature) return newFeatures;
22
- var uid = ((_ALIYUN_CONSOLE_CONFI = window.ALIYUN_CONSOLE_CONFIG) === null || _ALIYUN_CONSOLE_CONFI === void 0 ? void 0 : _ALIYUN_CONSOLE_CONFI.CURRENT_PK) || '';
22
+ var uid = ((_ALIYUN_CONSOLE_CONFI = window.ALIYUN_CONSOLE_CONFIG) === null || _ALIYUN_CONSOLE_CONFI === void 0 ? void 0 : _ALIYUN_CONSOLE_CONFI.MAIN_ACCOUNT_PK) || '';
23
23
  var md5Uid = md5(uid).toString();
24
24
  var enableBlockList = feature.enableBlockList,
25
25
  enableSampling = feature.enableSampling,
@@ -44,35 +44,59 @@ var processFeatures = function processFeatures(features) {
44
44
  }, {});
45
45
  };
46
46
 
47
+ var getRegions = function getRegions(regions) {
48
+ if (!Array.isArray(regions) && regions.region) {
49
+ return regions.region || [];
50
+ }
51
+
52
+ return [];
53
+ };
54
+
55
+ var processChannelFeatures = function processChannelFeatures(allChannelFeatures, channel) {
56
+ var channelFeatures = allChannelFeatures === null || allChannelFeatures === void 0 ? void 0 : allChannelFeatures[channel];
57
+ if (!channelFeatures) return {};
58
+ return Object.keys(channelFeatures).reduce(function (newChannelFeatures, key) {
59
+ var channelFeature = channelFeatures[key];
60
+ if (!channelFeature) return newChannelFeatures;
61
+
62
+ if (newChannelFeatures) {
63
+ var status = channelFeature.status,
64
+ attribute = channelFeature.attribute;
65
+ newChannelFeatures[key] = {
66
+ status: status,
67
+ attribute: _objectSpread(_objectSpread({}, attribute), {}, {
68
+ regions: getRegions(channelFeature.attribute.regions)
69
+ })
70
+ };
71
+ }
72
+
73
+ return newChannelFeatures;
74
+ }, {});
75
+ };
76
+
47
77
  var mergeConfigDataWithConsoleConfig = function mergeConfigDataWithConsoleConfig(configData, consoleConfig) {
48
- var _window, _window$ALIYUN_CONSOL, _configData$ALL_CHANN, _configData$ALL_CHANN2;
78
+ var _window, _window$ALIYUN_CONSOL, _configData$ALL_CHANN;
49
79
 
50
80
  var channel = ((_window = window) === null || _window === void 0 ? void 0 : (_window$ALIYUN_CONSOL = _window.ALIYUN_CONSOLE_CONFIG) === null || _window$ALIYUN_CONSOL === void 0 ? void 0 : _window$ALIYUN_CONSOL.CHANNEL) || 'OFFICIAL';
51
81
  var channelLinks = ((_configData$ALL_CHANN = configData.ALL_CHANNEL_LINKS) === null || _configData$ALL_CHANN === void 0 ? void 0 : _configData$ALL_CHANN[channel]) || {};
52
- var channelFeatures = ((_configData$ALL_CHANN2 = configData.ALL_CHANNEL_FEATURE_STATUS) === null || _configData$ALL_CHANN2 === void 0 ? void 0 : _configData$ALL_CHANN2[channel]) || {};
82
+ var channelFeatures = configData.ALL_CHANNEL_FEATURE_STATUS || {};
53
83
  var features = configData.ALL_FEATURE_STATUS || {};
54
84
  return _objectSpread(_objectSpread({}, consoleConfig), {}, {
55
85
  CHANNEL_LINKS: channelLinks,
56
- CHANNEL_FEATURE_STATUS: channelFeatures,
86
+ CHANNEL_FEATURE_STATUS: processChannelFeatures(channelFeatures, channel),
57
87
  FEATURE_STATUS: processFeatures(features)
58
88
  });
59
89
  };
60
90
 
61
91
  export var getConsoleConfig = /*#__PURE__*/function () {
62
- var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(config, consoleConfig) {
63
- var configData;
92
+ var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(configData, consoleConfig) {
64
93
  return _regeneratorRuntime.wrap(function _callee$(_context) {
65
94
  while (1) {
66
95
  switch (_context.prev = _context.next) {
67
96
  case 0:
68
- _context.next = 2;
69
- return getConfig(config);
70
-
71
- case 2:
72
- configData = _context.sent;
73
97
  return _context.abrupt("return", mergeConfigDataWithConsoleConfig(configData, consoleConfig));
74
98
 
75
- case 4:
99
+ case 1:
76
100
  case "end":
77
101
  return _context.stop();
78
102
  }
@@ -0,0 +1,28 @@
1
+ import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
2
+ import _asyncToGenerator from "@babel/runtime/helpers/esm/asyncToGenerator";
3
+ import _regeneratorRuntime from "@babel/runtime/regenerator";
4
+
5
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
6
+
7
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
8
+
9
+ export var getConsoleGlobal = /*#__PURE__*/function () {
10
+ var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(configData, global) {
11
+ return _regeneratorRuntime.wrap(function _callee$(_context) {
12
+ while (1) {
13
+ switch (_context.prev = _context.next) {
14
+ case 0:
15
+ return _context.abrupt("return", _objectSpread(_objectSpread({}, global), configData === null || configData === void 0 ? void 0 : configData.GLOBAL_DATA));
16
+
17
+ case 1:
18
+ case "end":
19
+ return _context.stop();
20
+ }
21
+ }
22
+ }, _callee);
23
+ }));
24
+
25
+ return function getConsoleGlobal(_x, _x2) {
26
+ return _ref.apply(this, arguments);
27
+ };
28
+ }();
package/es/version.js CHANGED
@@ -1 +1 @@
1
- export var version = '1.3.4-alpha.1';
1
+ export var version = '1.4.0-alpha.1';
package/lib/app.js CHANGED
@@ -80,7 +80,7 @@ var Application = function Application(props) {
80
80
  app = _useState4[0],
81
81
  setApp = _useState4[1];
82
82
 
83
- var appRef = (0, _react.useRef)(null);
83
+ var appRef = (0, _react.useRef)(undefined);
84
84
  (0, _react.useEffect)(function () {
85
85
  (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {
86
86
  var App;
@@ -1,6 +1,6 @@
1
1
  import React from 'react';
2
2
  interface IProps {
3
- error: Error | null;
3
+ error?: Error;
4
4
  }
5
5
  declare const ErrorPanel: React.FC<IProps>;
6
6
  export default ErrorPanel;
@@ -1,12 +1,13 @@
1
1
  import React, { ErrorInfo } from 'react';
2
2
  import { AlfaLogger } from '@alicloud/alfa-core';
3
3
  interface IProps {
4
+ fallbackRender?: (error?: Error) => Element;
4
5
  appDidCatch?: (error?: Error, info?: ErrorInfo) => void;
5
6
  logger?: AlfaLogger;
6
7
  }
7
8
  interface State {
8
9
  hasError: boolean;
9
- error: Error | null;
10
+ error?: Error;
10
11
  }
11
12
  declare class ErrorBoundary extends React.Component<IProps, State> {
12
13
  constructor(props: IProps);
@@ -39,7 +39,7 @@ var ErrorBoundary = /*#__PURE__*/function (_React$Component) {
39
39
  _this = _super.call(this, props);
40
40
  _this.state = {
41
41
  hasError: false,
42
- error: null
42
+ error: undefined
43
43
  };
44
44
  return _this;
45
45
  }
@@ -60,8 +60,9 @@ var ErrorBoundary = /*#__PURE__*/function (_React$Component) {
60
60
  (0, _isFunction.default)((_window = window) === null || _window === void 0 ? void 0 : (_window$__bl = _window.__bl) === null || _window$__bl === void 0 ? void 0 : _window$__bl.error) && ((_window2 = window) === null || _window2 === void 0 ? void 0 : (_window2$__bl = _window2.__bl) === null || _window2$__bl === void 0 ? void 0 : _window2$__bl.error(error, errorInfo)); // You can also log the error to an error reporting service in appDidCatch
61
61
 
62
62
  appDidCatch && appDidCatch(error, errorInfo);
63
- logger === null || logger === void 0 ? void 0 : logger.error({
64
- E_MSG: '',
63
+ (logger === null || logger === void 0 ? void 0 : logger.error) && logger.error({
64
+ E_CODE: 'RuntimeError',
65
+ E_MSG: error.message,
65
66
  E_STACK: error,
66
67
  C_STACK: errorInfo
67
68
  });
@@ -72,7 +73,8 @@ var ErrorBoundary = /*#__PURE__*/function (_React$Component) {
72
73
  var error = this.state.error;
73
74
 
74
75
  if (this.state.hasError) {
75
- // You can render any custom fallback UI
76
+ if (this.props.fallbackRender) return this.props.fallbackRender(error); // You can render any custom fallback UI
77
+
76
78
  return /*#__PURE__*/_react.default.createElement(_ErrorPanel.default, {
77
79
  error: error
78
80
  });
@@ -25,6 +25,8 @@ var _Loading = _interopRequireDefault(require("./components/Loading"));
25
25
 
26
26
  var _utils = require("./utils");
27
27
 
28
+ var _version = require("./version");
29
+
28
30
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
29
31
 
30
32
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
@@ -65,17 +67,23 @@ function createApplication(loader) {
65
67
  app = _useState2[0],
66
68
  setApp = _useState2[1];
67
69
 
68
- var appRef = (0, _react.useRef)(null);
70
+ var _useState3 = (0, _react.useState)(null),
71
+ _useState4 = (0, _slicedToArray2.default)(_useState3, 2),
72
+ setError = _useState4[1];
73
+
74
+ var appRef = (0, _react.useRef)(undefined);
69
75
  var tagName = (0, _utils.normalizeName)(props.name);
70
76
  var sandbox = (0, _react.useMemo)(function () {
71
77
  return _objectSpread(_objectSpread({}, customSandbox), {}, {
72
- allowResources: [].concat((0, _toConsumableArray2.default)((customSandbox === null || customSandbox === void 0 ? void 0 : customSandbox.allowResources) || []), [/^https?:\/\/at\.alicdn\.com\//]),
78
+ // allowResources: [
79
+ // ...(customSandbox?.allowResources || []),
80
+ // /^https?:\/\/at\.alicdn\.com\//,
81
+ // ],
73
82
  externalsVars: [].concat((0, _toConsumableArray2.default)((customSandbox === null || customSandbox === void 0 ? void 0 : customSandbox.externalsVars) || []), [// global vars used in ConsoleBase.forApp
74
83
  '_console_base_ready_'])
75
84
  });
76
85
  }, [customSandbox]);
77
86
  (0, _react.useEffect)(function () {
78
- // eslint-disable-next-line no-useless-catch
79
87
  (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {
80
88
  var _yield$loader$registe, App, logger;
81
89
 
@@ -83,15 +91,7 @@ function createApplication(loader) {
83
91
  while (1) {
84
92
  switch (_context.prev = _context.next) {
85
93
  case 0:
86
- if (!app) {
87
- _context.next = 2;
88
- break;
89
- }
90
-
91
- return _context.abrupt("return");
92
-
93
- case 2:
94
- _context.next = 4;
94
+ _context.next = 2;
95
95
  return loader.register({
96
96
  entry: entry,
97
97
  url: url,
@@ -111,47 +111,51 @@ function createApplication(loader) {
111
111
  beforeUpdate: beforeUpdate
112
112
  });
113
113
 
114
- case 4:
114
+ case 2:
115
115
  _yield$loader$registe = _context.sent;
116
116
  App = _yield$loader$registe.app;
117
117
  logger = _yield$loader$registe.logger;
118
118
 
119
119
  if (App) {
120
- _context.next = 9;
120
+ _context.next = 7;
121
121
  break;
122
122
  }
123
123
 
124
- return _context.abrupt("return", logger === null || logger === void 0 ? void 0 : logger.error({
124
+ return _context.abrupt("return", (logger === null || logger === void 0 ? void 0 : logger.error) && logger.error({
125
+ E_CODE: 'RuntimeError',
125
126
  E_MSG: 'load app failed.'
126
127
  }));
127
128
 
128
- case 9:
129
+ case 7:
129
130
  if (appRef.current) {
130
- _context.next = 11;
131
+ _context.next = 9;
131
132
  break;
132
133
  }
133
134
 
134
- return _context.abrupt("return", logger === null || logger === void 0 ? void 0 : logger.error({
135
+ return _context.abrupt("return", (logger === null || logger === void 0 ? void 0 : logger.error) && logger.error({
136
+ E_CODE: 'RuntimeError',
135
137
  E_MSG: 'cannot find container.'
136
138
  }));
137
139
 
138
- case 11:
139
- _context.next = 13;
140
+ case 9:
141
+ _context.next = 11;
140
142
  return App.mount(appRef.current, {
141
143
  customProps: customProps
142
144
  });
143
145
 
144
- case 13:
146
+ case 11:
145
147
  setApp(App);
146
148
 
147
- case 14:
149
+ case 12:
148
150
  case "end":
149
151
  return _context.stop();
150
152
  }
151
153
  }
152
154
  }, _callee);
153
155
  }))().catch(function (e) {
154
- throw e;
156
+ setError(function () {
157
+ throw e;
158
+ });
155
159
  });
156
160
  return function () {
157
161
  app && app.unmount();
@@ -162,15 +166,21 @@ function createApplication(loader) {
162
166
  app.update(customProps);
163
167
  }
164
168
 
169
+ var dataAttrs = {
170
+ 'data-id': version,
171
+ 'data-version': version,
172
+ 'data-loader': _version.version
173
+ };
165
174
  return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, !app ? /*#__PURE__*/_react.default.createElement(_Loading.default, {
166
175
  loading: loading
167
- }) : null, sandbox && sandbox.disableFakeBody ? /*#__PURE__*/_react.default.createElement(tagName, {
176
+ }) : null, sandbox && sandbox.disableFakeBody ? /*#__PURE__*/_react.default.createElement(tagName, _objectSpread({
168
177
  style: style,
169
178
  className: className,
170
- ref: appRef,
171
- dataId: name
172
- }) : /*#__PURE__*/_react.default.createElement(tagName, {}, /*#__PURE__*/_react.default.createElement('div', {
173
179
  ref: appRef
180
+ }, dataAttrs)) : /*#__PURE__*/_react.default.createElement(tagName, _objectSpread({}, dataAttrs), /*#__PURE__*/_react.default.createElement('div', {
181
+ ref: appRef,
182
+ style: style,
183
+ className: className
174
184
  })));
175
185
  };
176
186
  }