@copart/ops-tool-kit 1.13.0-beta.11 → 1.13.0-beta.13
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/dist/ops-tool-kit.js +504 -13
- package/dist/ops-tool-kit.js.map +1 -1
- package/iframe-webpack-facade.js +25 -0
- package/package.json +5 -3
package/dist/ops-tool-kit.js
CHANGED
|
@@ -6,6 +6,7 @@ var React = require('react');
|
|
|
6
6
|
var ReactDOM = require('react-dom');
|
|
7
7
|
var frontEndUtils = require('@copart/front-end-utils');
|
|
8
8
|
var coreComponents = require('@copart/core-components');
|
|
9
|
+
var reactRouterDom = require('react-router-dom');
|
|
9
10
|
|
|
10
11
|
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
11
12
|
|
|
@@ -47,12 +48,13 @@ var React__namespace = /*#__PURE__*/_interopNamespace(React);
|
|
|
47
48
|
var ReactDOM__default = /*#__PURE__*/_interopDefaultLegacy(ReactDOM);
|
|
48
49
|
|
|
49
50
|
const name$1 = "@copart/ops-tool-kit";
|
|
50
|
-
const version$3 = "1.13.0-beta.
|
|
51
|
+
const version$3 = "1.13.0-beta.13";
|
|
51
52
|
const main$1 = "dist/ops-tool-kit.js";
|
|
52
53
|
const style = "dist/ops-tool-kit.css";
|
|
53
54
|
const files = [
|
|
54
55
|
"dist",
|
|
55
|
-
"bin"
|
|
56
|
+
"bin",
|
|
57
|
+
"iframe-webpack-facade.js"
|
|
56
58
|
];
|
|
57
59
|
const bin = {
|
|
58
60
|
"generate-build-meta": "./bin/cli.js"
|
|
@@ -106,7 +108,8 @@ const devDependencies$1 = {
|
|
|
106
108
|
};
|
|
107
109
|
const peerDependencies = {
|
|
108
110
|
"@copart/core-components": "2.3.0-alpha.filters.6",
|
|
109
|
-
react: "*"
|
|
111
|
+
react: "*",
|
|
112
|
+
"react-router-dom": "^5.0.0"
|
|
110
113
|
};
|
|
111
114
|
const dependencies$1 = {
|
|
112
115
|
"@reacting/purist": "0.1.0",
|
|
@@ -68104,6 +68107,7 @@ function ContextualHelp(_ref) {
|
|
|
68104
68107
|
|
|
68105
68108
|
var _excluded = ["signal"];
|
|
68106
68109
|
var pending = new Map();
|
|
68110
|
+
var STORAGE_REQUEST_TIMEOUT_MS = 5000;
|
|
68107
68111
|
function requestId() {
|
|
68108
68112
|
return "bridge-".concat(Date.now(), "-").concat(Math.random().toString(36).slice(2, 9));
|
|
68109
68113
|
}
|
|
@@ -68231,11 +68235,29 @@ function sendFetchRequest(payload) {
|
|
|
68231
68235
|
});
|
|
68232
68236
|
}
|
|
68233
68237
|
function sendStorageGet(payload) {
|
|
68234
|
-
|
|
68238
|
+
var timeoutMs = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : STORAGE_REQUEST_TIMEOUT_MS;
|
|
68239
|
+
return new Promise(function (_resolve) {
|
|
68235
68240
|
var id = requestId();
|
|
68241
|
+
var timer = setTimeout(function () {
|
|
68242
|
+
if (pending.has(id)) {
|
|
68243
|
+
pending.delete(id);
|
|
68244
|
+
console.warn('[iframe-bridge/transport] STORAGE_GET timed out', {
|
|
68245
|
+
op: payload === null || payload === void 0 ? void 0 : payload.op,
|
|
68246
|
+
key: payload === null || payload === void 0 ? void 0 : payload.key,
|
|
68247
|
+
timeoutMs: timeoutMs
|
|
68248
|
+
});
|
|
68249
|
+
_resolve(undefined);
|
|
68250
|
+
}
|
|
68251
|
+
}, timeoutMs);
|
|
68236
68252
|
pending.set(id, {
|
|
68237
|
-
resolve: resolve
|
|
68238
|
-
|
|
68253
|
+
resolve: function resolve(result) {
|
|
68254
|
+
clearTimeout(timer);
|
|
68255
|
+
_resolve(result);
|
|
68256
|
+
},
|
|
68257
|
+
reject: function reject() {
|
|
68258
|
+
clearTimeout(timer);
|
|
68259
|
+
_resolve(undefined);
|
|
68260
|
+
}
|
|
68239
68261
|
});
|
|
68240
68262
|
post('STORAGE_GET', _objectSpread2(_objectSpread2({}, payload), {}, {
|
|
68241
68263
|
requestId: id
|
|
@@ -68243,11 +68265,29 @@ function sendStorageGet(payload) {
|
|
|
68243
68265
|
});
|
|
68244
68266
|
}
|
|
68245
68267
|
function sendStorageSet(payload) {
|
|
68246
|
-
|
|
68268
|
+
var timeoutMs = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : STORAGE_REQUEST_TIMEOUT_MS;
|
|
68269
|
+
return new Promise(function (_resolve2) {
|
|
68247
68270
|
var id = requestId();
|
|
68271
|
+
var timer = setTimeout(function () {
|
|
68272
|
+
if (pending.has(id)) {
|
|
68273
|
+
pending.delete(id);
|
|
68274
|
+
console.warn('[iframe-bridge/transport] STORAGE_SET timed out', {
|
|
68275
|
+
op: payload === null || payload === void 0 ? void 0 : payload.op,
|
|
68276
|
+
key: payload === null || payload === void 0 ? void 0 : payload.key,
|
|
68277
|
+
timeoutMs: timeoutMs
|
|
68278
|
+
});
|
|
68279
|
+
_resolve2(undefined);
|
|
68280
|
+
}
|
|
68281
|
+
}, timeoutMs);
|
|
68248
68282
|
pending.set(id, {
|
|
68249
|
-
resolve: resolve
|
|
68250
|
-
|
|
68283
|
+
resolve: function resolve(result) {
|
|
68284
|
+
clearTimeout(timer);
|
|
68285
|
+
_resolve2(result);
|
|
68286
|
+
},
|
|
68287
|
+
reject: function reject() {
|
|
68288
|
+
clearTimeout(timer);
|
|
68289
|
+
_resolve2(undefined);
|
|
68290
|
+
}
|
|
68251
68291
|
});
|
|
68252
68292
|
post('STORAGE_SET', _objectSpread2(_objectSpread2({}, payload), {}, {
|
|
68253
68293
|
requestId: id
|
|
@@ -68255,22 +68295,22 @@ function sendStorageSet(payload) {
|
|
|
68255
68295
|
});
|
|
68256
68296
|
}
|
|
68257
68297
|
function getInitData() {
|
|
68258
|
-
return new Promise(function (
|
|
68298
|
+
return new Promise(function (_resolve3) {
|
|
68259
68299
|
var id = requestId();
|
|
68260
68300
|
var timer = setTimeout(function () {
|
|
68261
68301
|
if (pending.has(id)) {
|
|
68262
68302
|
pending.delete(id);
|
|
68263
|
-
|
|
68303
|
+
_resolve3(null);
|
|
68264
68304
|
}
|
|
68265
68305
|
}, 5000);
|
|
68266
68306
|
pending.set(id, {
|
|
68267
68307
|
resolve: function resolve(result) {
|
|
68268
68308
|
clearTimeout(timer);
|
|
68269
|
-
|
|
68309
|
+
_resolve3(result);
|
|
68270
68310
|
},
|
|
68271
68311
|
reject: function reject() {
|
|
68272
68312
|
clearTimeout(timer);
|
|
68273
|
-
|
|
68313
|
+
_resolve3(null);
|
|
68274
68314
|
}
|
|
68275
68315
|
});
|
|
68276
68316
|
post('GET_INIT_DATA', {
|
|
@@ -68407,6 +68447,17 @@ function setInitCache(initData) {
|
|
|
68407
68447
|
count: Array.isArray(initData[k]) ? initData[k].length : 'not-array'
|
|
68408
68448
|
});
|
|
68409
68449
|
});
|
|
68450
|
+
var appConfigKeys = Object.keys(initData).filter(function (k) {
|
|
68451
|
+
return k.endsWith(':config') && k !== 'opsportal-core:config';
|
|
68452
|
+
});
|
|
68453
|
+
appConfigKeys.forEach(function (k) {
|
|
68454
|
+
var _initData$k;
|
|
68455
|
+
cache.local[k] = initData[k];
|
|
68456
|
+
console.log('[iframe-bridge/storage] setInitCache mapped app config', {
|
|
68457
|
+
key: k,
|
|
68458
|
+
hasRunConfig: Boolean((_initData$k = initData[k]) === null || _initData$k === void 0 ? void 0 : _initData$k.runConfig)
|
|
68459
|
+
});
|
|
68460
|
+
});
|
|
68410
68461
|
}
|
|
68411
68462
|
function setExtraLocal(key, value) {
|
|
68412
68463
|
cache.local[key] = value;
|
|
@@ -69561,6 +69612,438 @@ var iframeFacade = {
|
|
|
69561
69612
|
}
|
|
69562
69613
|
};
|
|
69563
69614
|
|
|
69615
|
+
function normalizeIframePath(uri) {
|
|
69616
|
+
if (uri === '' || uri == null) return '/';
|
|
69617
|
+
return uri.startsWith('/') ? uri : "/".concat(uri);
|
|
69618
|
+
}
|
|
69619
|
+
|
|
69620
|
+
function serializeNavItems(items) {
|
|
69621
|
+
if (!Array.isArray(items)) return [];
|
|
69622
|
+
return items.map(function (item) {
|
|
69623
|
+
var serialized = {
|
|
69624
|
+
name: item.name,
|
|
69625
|
+
route: item.route
|
|
69626
|
+
};
|
|
69627
|
+
if (item.icon && typeof item.icon === 'string') serialized.icon = item.icon;
|
|
69628
|
+
if (typeof item.disabled === 'function') {
|
|
69629
|
+
try {
|
|
69630
|
+
serialized.disabled = item.disabled();
|
|
69631
|
+
} catch (_) {
|
|
69632
|
+
serialized.disabled = false;
|
|
69633
|
+
}
|
|
69634
|
+
} else if (typeof item.disabled === 'boolean') {
|
|
69635
|
+
serialized.disabled = item.disabled;
|
|
69636
|
+
}
|
|
69637
|
+
if (typeof item.hidden === 'function') {
|
|
69638
|
+
try {
|
|
69639
|
+
serialized.hidden = item.hidden();
|
|
69640
|
+
} catch (_) {
|
|
69641
|
+
serialized.hidden = false;
|
|
69642
|
+
}
|
|
69643
|
+
} else if (typeof item.hidden === 'boolean') {
|
|
69644
|
+
serialized.hidden = item.hidden;
|
|
69645
|
+
}
|
|
69646
|
+
if (item.isLandingPage) serialized.isLandingPage = true;
|
|
69647
|
+
if (item.subMenuItems && item.subMenuItems.length > 0) {
|
|
69648
|
+
serialized.subMenuItems = serializeNavItems(item.subMenuItems);
|
|
69649
|
+
}
|
|
69650
|
+
return serialized;
|
|
69651
|
+
});
|
|
69652
|
+
}
|
|
69653
|
+
|
|
69654
|
+
function IframeRouteSync(_ref) {
|
|
69655
|
+
var _ref$updateUriIsPath = _ref.updateUriIsPath,
|
|
69656
|
+
updateUriIsPath = _ref$updateUriIsPath === void 0 ? false : _ref$updateUriIsPath,
|
|
69657
|
+
_ref$suppressEcho = _ref.suppressEcho,
|
|
69658
|
+
suppressEcho = _ref$suppressEcho === void 0 ? true : _ref$suppressEcho;
|
|
69659
|
+
var history = reactRouterDom.useHistory();
|
|
69660
|
+
var location = reactRouterDom.useLocation();
|
|
69661
|
+
var initialRef = React.useRef(true);
|
|
69662
|
+
var suppressUpdateUriRef = React.useRef(false);
|
|
69663
|
+
React.useEffect(function () {
|
|
69664
|
+
var remove = addMessageListener(function (data) {
|
|
69665
|
+
if (data.eventType === 'LOAD_URI' && data.eventProps) {
|
|
69666
|
+
var path = normalizeIframePath(data.eventProps.uri);
|
|
69667
|
+
if (suppressEcho) suppressUpdateUriRef.current = true;
|
|
69668
|
+
history.push(path);
|
|
69669
|
+
}
|
|
69670
|
+
});
|
|
69671
|
+
return remove;
|
|
69672
|
+
}, [history, suppressEcho]);
|
|
69673
|
+
React.useEffect(function () {
|
|
69674
|
+
if (initialRef.current) {
|
|
69675
|
+
initialRef.current = false;
|
|
69676
|
+
return;
|
|
69677
|
+
}
|
|
69678
|
+
if (suppressEcho && suppressUpdateUriRef.current) {
|
|
69679
|
+
suppressUpdateUriRef.current = false;
|
|
69680
|
+
return;
|
|
69681
|
+
}
|
|
69682
|
+
var pathname = location.pathname || '/';
|
|
69683
|
+
postUpdateUri(pathname, updateUriIsPath);
|
|
69684
|
+
}, [location.pathname, updateUriIsPath, suppressEcho]);
|
|
69685
|
+
return null;
|
|
69686
|
+
}
|
|
69687
|
+
|
|
69688
|
+
function defaultToolkitEnv() {
|
|
69689
|
+
return {
|
|
69690
|
+
STACK: process.env.STACK,
|
|
69691
|
+
APP_NAME: process.env.APP_NAME,
|
|
69692
|
+
CORE_CONFIG_URI: process.env.CORE_CONFIG_URI,
|
|
69693
|
+
CONFIG_URI: process.env.CONFIG_URI
|
|
69694
|
+
};
|
|
69695
|
+
}
|
|
69696
|
+
function AppEnvSender(_ref) {
|
|
69697
|
+
var toolkitEnv = _ref.toolkitEnv,
|
|
69698
|
+
_ref$mihelpAgentProps = _ref.mihelpAgentProps,
|
|
69699
|
+
mihelpAgentProps = _ref$mihelpAgentProps === void 0 ? null : _ref$mihelpAgentProps;
|
|
69700
|
+
var sentRef = React.useRef(false);
|
|
69701
|
+
React.useEffect(function () {
|
|
69702
|
+
if (sentRef.current) return;
|
|
69703
|
+
sentRef.current = true;
|
|
69704
|
+
postAppEnv(toolkitEnv || defaultToolkitEnv(), mihelpAgentProps);
|
|
69705
|
+
}, [toolkitEnv, mihelpAgentProps]);
|
|
69706
|
+
return null;
|
|
69707
|
+
}
|
|
69708
|
+
|
|
69709
|
+
function NavConfigSender(_ref) {
|
|
69710
|
+
var navItemsLoader = _ref.navItemsLoader,
|
|
69711
|
+
onError = _ref.onError;
|
|
69712
|
+
var sentRef = React.useRef(false);
|
|
69713
|
+
React.useEffect(function () {
|
|
69714
|
+
if (sentRef.current || !navItemsLoader) return;
|
|
69715
|
+
sentRef.current = true;
|
|
69716
|
+
navItemsLoader().then(function (mod) {
|
|
69717
|
+
var items = mod && (mod.default != null ? mod.default : mod);
|
|
69718
|
+
postNavConfig(serializeNavItems(items));
|
|
69719
|
+
}).catch(function (err) {
|
|
69720
|
+
if (onError) {
|
|
69721
|
+
onError(err);
|
|
69722
|
+
} else {
|
|
69723
|
+
console.warn('[Iframe] Failed to load navItems:', err);
|
|
69724
|
+
}
|
|
69725
|
+
});
|
|
69726
|
+
}, [navItemsLoader, onError]);
|
|
69727
|
+
return null;
|
|
69728
|
+
}
|
|
69729
|
+
|
|
69730
|
+
var defaultContentStyle = {
|
|
69731
|
+
height: '100%',
|
|
69732
|
+
display: 'flex',
|
|
69733
|
+
flexDirection: 'column',
|
|
69734
|
+
overflow: 'hidden'
|
|
69735
|
+
};
|
|
69736
|
+
function IframeAppRootInner(_ref) {
|
|
69737
|
+
var children = _ref.children,
|
|
69738
|
+
contentStyle = _ref.contentStyle,
|
|
69739
|
+
toolkitEnv = _ref.toolkitEnv,
|
|
69740
|
+
mihelpAgentProps = _ref.mihelpAgentProps,
|
|
69741
|
+
navItemsLoader = _ref.navItemsLoader,
|
|
69742
|
+
navConfigOnError = _ref.navConfigOnError,
|
|
69743
|
+
updateUriIsPath = _ref.updateUriIsPath,
|
|
69744
|
+
suppressRouteSyncEcho = _ref.suppressRouteSyncEcho;
|
|
69745
|
+
var history = reactRouterDom.useHistory();
|
|
69746
|
+
return /*#__PURE__*/React__default["default"].createElement(CrumbProvider, {
|
|
69747
|
+
navigate: function navigate(path) {
|
|
69748
|
+
return history.push(path);
|
|
69749
|
+
}
|
|
69750
|
+
}, /*#__PURE__*/React__default["default"].createElement(AppEnvSender, {
|
|
69751
|
+
toolkitEnv: toolkitEnv,
|
|
69752
|
+
mihelpAgentProps: mihelpAgentProps
|
|
69753
|
+
}), /*#__PURE__*/React__default["default"].createElement(IframeRouteSync, {
|
|
69754
|
+
updateUriIsPath: updateUriIsPath,
|
|
69755
|
+
suppressEcho: suppressRouteSyncEcho
|
|
69756
|
+
}), navItemsLoader ? /*#__PURE__*/React__default["default"].createElement(NavConfigSender, {
|
|
69757
|
+
navItemsLoader: navItemsLoader,
|
|
69758
|
+
onError: navConfigOnError
|
|
69759
|
+
}) : null, /*#__PURE__*/React__default["default"].createElement("div", {
|
|
69760
|
+
style: contentStyle || defaultContentStyle
|
|
69761
|
+
}, children));
|
|
69762
|
+
}
|
|
69763
|
+
function IframeAppRoot(_ref2) {
|
|
69764
|
+
var _ref2$initialUri = _ref2.initialUri,
|
|
69765
|
+
initialUri = _ref2$initialUri === void 0 ? '/' : _ref2$initialUri,
|
|
69766
|
+
children = _ref2.children,
|
|
69767
|
+
contentStyle = _ref2.contentStyle,
|
|
69768
|
+
toolkitEnv = _ref2.toolkitEnv,
|
|
69769
|
+
_ref2$mihelpAgentProp = _ref2.mihelpAgentProps,
|
|
69770
|
+
mihelpAgentProps = _ref2$mihelpAgentProp === void 0 ? null : _ref2$mihelpAgentProp,
|
|
69771
|
+
navItemsLoader = _ref2.navItemsLoader,
|
|
69772
|
+
navConfigOnError = _ref2.navConfigOnError,
|
|
69773
|
+
_ref2$updateUriIsPath = _ref2.updateUriIsPath,
|
|
69774
|
+
updateUriIsPath = _ref2$updateUriIsPath === void 0 ? false : _ref2$updateUriIsPath,
|
|
69775
|
+
_ref2$suppressRouteSy = _ref2.suppressRouteSyncEcho,
|
|
69776
|
+
suppressRouteSyncEcho = _ref2$suppressRouteSy === void 0 ? true : _ref2$suppressRouteSy;
|
|
69777
|
+
var initialPath = normalizeIframePath(initialUri);
|
|
69778
|
+
return /*#__PURE__*/React__default["default"].createElement(reactRouterDom.MemoryRouter, {
|
|
69779
|
+
initialEntries: [initialPath],
|
|
69780
|
+
initialIndex: 0
|
|
69781
|
+
}, /*#__PURE__*/React__default["default"].createElement(IframeAppRootInner, {
|
|
69782
|
+
contentStyle: contentStyle,
|
|
69783
|
+
toolkitEnv: toolkitEnv,
|
|
69784
|
+
mihelpAgentProps: mihelpAgentProps,
|
|
69785
|
+
navItemsLoader: navItemsLoader,
|
|
69786
|
+
navConfigOnError: navConfigOnError,
|
|
69787
|
+
updateUriIsPath: updateUriIsPath,
|
|
69788
|
+
suppressRouteSyncEcho: suppressRouteSyncEcho
|
|
69789
|
+
}, children));
|
|
69790
|
+
}
|
|
69791
|
+
|
|
69792
|
+
/**
|
|
69793
|
+
* Register a synchronous LOAD_URI listener before async bootstrap loads.
|
|
69794
|
+
* Call this from the app entry (index.js) before dynamic-importing bootstrap.
|
|
69795
|
+
*/
|
|
69796
|
+
function registerEarlyLoadUriListener() {
|
|
69797
|
+
if (typeof window === 'undefined') return;
|
|
69798
|
+
if (window.__IFRAME_EARLY_LOAD_URI_LISTENER_REGISTERED) return;
|
|
69799
|
+
window.__IFRAME_EARLY_LOAD_URI_LISTENER_REGISTERED = true;
|
|
69800
|
+
window.__IFRAME_EARLY_LOAD_URI = null;
|
|
69801
|
+
window.addEventListener('message', function (event) {
|
|
69802
|
+
if (event.data && event.data.eventType === 'LOAD_URI' && event.data.eventProps) {
|
|
69803
|
+
window.__IFRAME_EARLY_LOAD_URI = event.data.eventProps.uri || '/';
|
|
69804
|
+
}
|
|
69805
|
+
});
|
|
69806
|
+
}
|
|
69807
|
+
|
|
69808
|
+
function resolveRootNode(rootSelector) {
|
|
69809
|
+
var selectors = rootSelector ? [rootSelector] : ['#root', '#app'];
|
|
69810
|
+
for (var i = 0; i < selectors.length; i += 1) {
|
|
69811
|
+
var node = document.querySelector(selectors[i]);
|
|
69812
|
+
if (node) return node;
|
|
69813
|
+
}
|
|
69814
|
+
return null;
|
|
69815
|
+
}
|
|
69816
|
+
function isInIframe() {
|
|
69817
|
+
return typeof window !== 'undefined' && window.self !== window.top;
|
|
69818
|
+
}
|
|
69819
|
+
function renderStandaloneError(rootNode, message) {
|
|
69820
|
+
rootNode.innerHTML = "<h1>".concat(message, "</h1>");
|
|
69821
|
+
}
|
|
69822
|
+
function normalizePermissionKeys(permissionKeys) {
|
|
69823
|
+
if (!permissionKeys) return [];
|
|
69824
|
+
return Array.isArray(permissionKeys) ? permissionKeys : [permissionKeys];
|
|
69825
|
+
}
|
|
69826
|
+
function isValidAppConfig(config, validateAppConfig) {
|
|
69827
|
+
if (validateAppConfig) return validateAppConfig(config);
|
|
69828
|
+
return !!config;
|
|
69829
|
+
}
|
|
69830
|
+
function hydrateAppConfig(_x) {
|
|
69831
|
+
return _hydrateAppConfig.apply(this, arguments);
|
|
69832
|
+
}
|
|
69833
|
+
function _hydrateAppConfig() {
|
|
69834
|
+
_hydrateAppConfig = _asyncToGenerator$1(/*#__PURE__*/_regenerator().m(function _callee(_ref) {
|
|
69835
|
+
var appName, getCachedLocalItem, sendStorageGet, setExtraLocal, fetcher, configFallbackUri, validateAppConfig, configKey, appConfig;
|
|
69836
|
+
return _regenerator().w(function (_context) {
|
|
69837
|
+
while (1) switch (_context.n) {
|
|
69838
|
+
case 0:
|
|
69839
|
+
appName = _ref.appName, getCachedLocalItem = _ref.getCachedLocalItem, sendStorageGet = _ref.sendStorageGet, setExtraLocal = _ref.setExtraLocal, fetcher = _ref.fetcher, configFallbackUri = _ref.configFallbackUri, validateAppConfig = _ref.validateAppConfig;
|
|
69840
|
+
configKey = "".concat(appName, ":config");
|
|
69841
|
+
appConfig = getCachedLocalItem(configKey);
|
|
69842
|
+
if (isValidAppConfig(appConfig, validateAppConfig)) {
|
|
69843
|
+
_context.n = 2;
|
|
69844
|
+
break;
|
|
69845
|
+
}
|
|
69846
|
+
_context.n = 1;
|
|
69847
|
+
return sendStorageGet({
|
|
69848
|
+
op: 'getLocalItem',
|
|
69849
|
+
key: configKey
|
|
69850
|
+
});
|
|
69851
|
+
case 1:
|
|
69852
|
+
appConfig = _context.v;
|
|
69853
|
+
case 2:
|
|
69854
|
+
if (!(!isValidAppConfig(appConfig, validateAppConfig) && configFallbackUri && fetcher)) {
|
|
69855
|
+
_context.n = 4;
|
|
69856
|
+
break;
|
|
69857
|
+
}
|
|
69858
|
+
console.log('[Iframe] fetching app config from', configFallbackUri);
|
|
69859
|
+
_context.n = 3;
|
|
69860
|
+
return fetcher.getConfig(configFallbackUri);
|
|
69861
|
+
case 3:
|
|
69862
|
+
appConfig = _context.v;
|
|
69863
|
+
case 4:
|
|
69864
|
+
if (isValidAppConfig(appConfig, validateAppConfig)) {
|
|
69865
|
+
setExtraLocal(configKey, appConfig);
|
|
69866
|
+
}
|
|
69867
|
+
case 5:
|
|
69868
|
+
return _context.a(2);
|
|
69869
|
+
}
|
|
69870
|
+
}, _callee);
|
|
69871
|
+
}));
|
|
69872
|
+
return _hydrateAppConfig.apply(this, arguments);
|
|
69873
|
+
}
|
|
69874
|
+
function hydratePermissions(_x2) {
|
|
69875
|
+
return _hydratePermissions.apply(this, arguments);
|
|
69876
|
+
}
|
|
69877
|
+
/**
|
|
69878
|
+
* Bootstrap an iframe-embedded portal app: init bridge data from shell, then render.
|
|
69879
|
+
*
|
|
69880
|
+
* @param {object} options
|
|
69881
|
+
* @param {string} [options.appName] - Defaults to process.env.APP_NAME
|
|
69882
|
+
* @param {string|string[]} [options.permissionKeys] - Shell localStorage permission key(s)
|
|
69883
|
+
* @param {string} [options.rootSelector] - Root element selector (default: #root then #app)
|
|
69884
|
+
* @param {(initData: *) => void} [options.onInitCache] - Called after setInitCache (e.g. initStoreData)
|
|
69885
|
+
* @param {(initialUri: string, rootNode: HTMLElement) => void} options.render - App render callback
|
|
69886
|
+
* @param {'render'|'error'|'skip'} [options.standaloneMode='render'] - Behavior when not in iframe
|
|
69887
|
+
* @param {(rootNode: HTMLElement) => void} [options.standaloneRender] - Custom standalone UI
|
|
69888
|
+
* @param {string} [options.standaloneErrorMessage] - Message when standaloneMode is 'error'
|
|
69889
|
+
* @param {boolean} [options.fetchConfigFromShell=true] - Fetch app config/permissions from shell
|
|
69890
|
+
* @param {string} [options.configFallbackUri] - Defaults to process.env.CONFIG_URI
|
|
69891
|
+
* @param {(config: *) => boolean} [options.validateAppConfig] - Config validity check before setExtraLocal
|
|
69892
|
+
* @param {boolean} [options.permissionsOnlyIfArray=true] - Only set permissions when shell returns an array
|
|
69893
|
+
*/
|
|
69894
|
+
function _hydratePermissions() {
|
|
69895
|
+
_hydratePermissions = _asyncToGenerator$1(/*#__PURE__*/_regenerator().m(function _callee3(_ref2) {
|
|
69896
|
+
var permissionKeys, getCachedLocalItem, sendStorageGet, setExtraLocal, permissionsOnlyIfArray, keys;
|
|
69897
|
+
return _regenerator().w(function (_context3) {
|
|
69898
|
+
while (1) switch (_context3.n) {
|
|
69899
|
+
case 0:
|
|
69900
|
+
permissionKeys = _ref2.permissionKeys, getCachedLocalItem = _ref2.getCachedLocalItem, sendStorageGet = _ref2.sendStorageGet, setExtraLocal = _ref2.setExtraLocal, permissionsOnlyIfArray = _ref2.permissionsOnlyIfArray;
|
|
69901
|
+
keys = normalizePermissionKeys(permissionKeys);
|
|
69902
|
+
_context3.n = 1;
|
|
69903
|
+
return Promise.all(keys.map(/*#__PURE__*/function () {
|
|
69904
|
+
var _ref3 = _asyncToGenerator$1(/*#__PURE__*/_regenerator().m(function _callee2(key) {
|
|
69905
|
+
var perms;
|
|
69906
|
+
return _regenerator().w(function (_context2) {
|
|
69907
|
+
while (1) switch (_context2.n) {
|
|
69908
|
+
case 0:
|
|
69909
|
+
perms = getCachedLocalItem(key);
|
|
69910
|
+
if (!(perms == null || permissionsOnlyIfArray && !Array.isArray(perms))) {
|
|
69911
|
+
_context2.n = 2;
|
|
69912
|
+
break;
|
|
69913
|
+
}
|
|
69914
|
+
_context2.n = 1;
|
|
69915
|
+
return sendStorageGet({
|
|
69916
|
+
op: 'getLocalItem',
|
|
69917
|
+
key: key
|
|
69918
|
+
});
|
|
69919
|
+
case 1:
|
|
69920
|
+
perms = _context2.v;
|
|
69921
|
+
case 2:
|
|
69922
|
+
if (!(permissionsOnlyIfArray && !Array.isArray(perms))) {
|
|
69923
|
+
_context2.n = 3;
|
|
69924
|
+
break;
|
|
69925
|
+
}
|
|
69926
|
+
return _context2.a(2);
|
|
69927
|
+
case 3:
|
|
69928
|
+
if (perms != null) setExtraLocal(key, perms);
|
|
69929
|
+
case 4:
|
|
69930
|
+
return _context2.a(2);
|
|
69931
|
+
}
|
|
69932
|
+
}, _callee2);
|
|
69933
|
+
}));
|
|
69934
|
+
return function (_x4) {
|
|
69935
|
+
return _ref3.apply(this, arguments);
|
|
69936
|
+
};
|
|
69937
|
+
}()));
|
|
69938
|
+
case 1:
|
|
69939
|
+
return _context3.a(2);
|
|
69940
|
+
}
|
|
69941
|
+
}, _callee3);
|
|
69942
|
+
}));
|
|
69943
|
+
return _hydratePermissions.apply(this, arguments);
|
|
69944
|
+
}
|
|
69945
|
+
function bootstrapIframeApp(_x3) {
|
|
69946
|
+
return _bootstrapIframeApp.apply(this, arguments);
|
|
69947
|
+
}
|
|
69948
|
+
function _bootstrapIframeApp() {
|
|
69949
|
+
_bootstrapIframeApp = _asyncToGenerator$1(/*#__PURE__*/_regenerator().m(function _callee4(options) {
|
|
69950
|
+
var _ref4, _ref4$appName, appName, permissionKeys, rootSelector, onInitCache, render, _ref4$standaloneMode, standaloneMode, standaloneRender, _ref4$standaloneError, standaloneErrorMessage, _ref4$fetchConfigFrom, fetchConfigFromShell, _ref4$configFallbackU, configFallbackUri, validateAppConfig, _ref4$permissionsOnly, permissionsOnlyIfArray, rootNode, bridge, fetcher, storage, getInitialUri, getInitData, setInitCache, setExtraLocal, sendStorageGet, setAppName, _yield$Promise$all, _yield$Promise$all2, initialUri, initData, getCachedLocalItem, tasks, _t;
|
|
69951
|
+
return _regenerator().w(function (_context4) {
|
|
69952
|
+
while (1) switch (_context4.p = _context4.n) {
|
|
69953
|
+
case 0:
|
|
69954
|
+
_ref4 = options || {}, _ref4$appName = _ref4.appName, appName = _ref4$appName === void 0 ? process.env.APP_NAME : _ref4$appName, permissionKeys = _ref4.permissionKeys, rootSelector = _ref4.rootSelector, onInitCache = _ref4.onInitCache, render = _ref4.render, _ref4$standaloneMode = _ref4.standaloneMode, standaloneMode = _ref4$standaloneMode === void 0 ? 'render' : _ref4$standaloneMode, standaloneRender = _ref4.standaloneRender, _ref4$standaloneError = _ref4.standaloneErrorMessage, standaloneErrorMessage = _ref4$standaloneError === void 0 ? 'This application must be opened from the parent portal.' : _ref4$standaloneError, _ref4$fetchConfigFrom = _ref4.fetchConfigFromShell, fetchConfigFromShell = _ref4$fetchConfigFrom === void 0 ? true : _ref4$fetchConfigFrom, _ref4$configFallbackU = _ref4.configFallbackUri, configFallbackUri = _ref4$configFallbackU === void 0 ? process.env.CONFIG_URI : _ref4$configFallbackU, validateAppConfig = _ref4.validateAppConfig, _ref4$permissionsOnly = _ref4.permissionsOnlyIfArray, permissionsOnlyIfArray = _ref4$permissionsOnly === void 0 ? true : _ref4$permissionsOnly;
|
|
69955
|
+
if (!(typeof render !== 'function')) {
|
|
69956
|
+
_context4.n = 1;
|
|
69957
|
+
break;
|
|
69958
|
+
}
|
|
69959
|
+
throw new Error('bootstrapIframeApp requires a render(initialUri, rootNode) function');
|
|
69960
|
+
case 1:
|
|
69961
|
+
rootNode = resolveRootNode(rootSelector);
|
|
69962
|
+
if (rootNode) {
|
|
69963
|
+
_context4.n = 2;
|
|
69964
|
+
break;
|
|
69965
|
+
}
|
|
69966
|
+
console.error('[Iframe] No root element found');
|
|
69967
|
+
return _context4.a(2);
|
|
69968
|
+
case 2:
|
|
69969
|
+
if (isInIframe()) {
|
|
69970
|
+
_context4.n = 4;
|
|
69971
|
+
break;
|
|
69972
|
+
}
|
|
69973
|
+
if (!(standaloneMode === 'error')) {
|
|
69974
|
+
_context4.n = 3;
|
|
69975
|
+
break;
|
|
69976
|
+
}
|
|
69977
|
+
if (standaloneRender) standaloneRender(rootNode);else renderStandaloneError(rootNode, standaloneErrorMessage);
|
|
69978
|
+
return _context4.a(2);
|
|
69979
|
+
case 3:
|
|
69980
|
+
if (!(standaloneMode === 'skip')) {
|
|
69981
|
+
_context4.n = 4;
|
|
69982
|
+
break;
|
|
69983
|
+
}
|
|
69984
|
+
return _context4.a(2);
|
|
69985
|
+
case 4:
|
|
69986
|
+
bridge = iframeFacade.bridge, fetcher = iframeFacade.fetcher, storage = iframeFacade.storage;
|
|
69987
|
+
getInitialUri = bridge.getInitialUri, getInitData = bridge.getInitData, setInitCache = bridge.setInitCache, setExtraLocal = bridge.setExtraLocal, sendStorageGet = bridge.sendStorageGet, setAppName = bridge.setAppName;
|
|
69988
|
+
_context4.n = 5;
|
|
69989
|
+
return Promise.all([getInitialUri(), getInitData()]);
|
|
69990
|
+
case 5:
|
|
69991
|
+
_yield$Promise$all = _context4.v;
|
|
69992
|
+
_yield$Promise$all2 = _slicedToArray(_yield$Promise$all, 2);
|
|
69993
|
+
initialUri = _yield$Promise$all2[0];
|
|
69994
|
+
initData = _yield$Promise$all2[1];
|
|
69995
|
+
if (appName && typeof setAppName === 'function') setAppName(appName);
|
|
69996
|
+
if (initData) {
|
|
69997
|
+
setInitCache(initData);
|
|
69998
|
+
if (onInitCache) onInitCache(initData);
|
|
69999
|
+
} else {
|
|
70000
|
+
console.warn('[Iframe] no initData from shell');
|
|
70001
|
+
}
|
|
70002
|
+
getCachedLocalItem = function getCachedLocalItem(key) {
|
|
70003
|
+
return storage.getLocalItem(key);
|
|
70004
|
+
};
|
|
70005
|
+
if (!(fetchConfigFromShell && appName)) {
|
|
70006
|
+
_context4.n = 9;
|
|
70007
|
+
break;
|
|
70008
|
+
}
|
|
70009
|
+
_context4.p = 6;
|
|
70010
|
+
tasks = [hydrateAppConfig({
|
|
70011
|
+
appName: appName,
|
|
70012
|
+
getCachedLocalItem: getCachedLocalItem,
|
|
70013
|
+
sendStorageGet: sendStorageGet,
|
|
70014
|
+
setExtraLocal: setExtraLocal,
|
|
70015
|
+
fetcher: fetcher,
|
|
70016
|
+
configFallbackUri: configFallbackUri,
|
|
70017
|
+
validateAppConfig: validateAppConfig
|
|
70018
|
+
})];
|
|
70019
|
+
if (permissionKeys) {
|
|
70020
|
+
tasks.push(hydratePermissions({
|
|
70021
|
+
permissionKeys: permissionKeys,
|
|
70022
|
+
getCachedLocalItem: getCachedLocalItem,
|
|
70023
|
+
sendStorageGet: sendStorageGet,
|
|
70024
|
+
setExtraLocal: setExtraLocal,
|
|
70025
|
+
permissionsOnlyIfArray: permissionsOnlyIfArray
|
|
70026
|
+
}));
|
|
70027
|
+
}
|
|
70028
|
+
_context4.n = 7;
|
|
70029
|
+
return Promise.all(tasks);
|
|
70030
|
+
case 7:
|
|
70031
|
+
_context4.n = 9;
|
|
70032
|
+
break;
|
|
70033
|
+
case 8:
|
|
70034
|
+
_context4.p = 8;
|
|
70035
|
+
_t = _context4.v;
|
|
70036
|
+
console.warn('[Iframe] failed to fetch app config/permissions from shell:', _t);
|
|
70037
|
+
case 9:
|
|
70038
|
+
render(initialUri, rootNode);
|
|
70039
|
+
case 10:
|
|
70040
|
+
return _context4.a(2);
|
|
70041
|
+
}
|
|
70042
|
+
}, _callee4, null, [[6, 8]]);
|
|
70043
|
+
}));
|
|
70044
|
+
return _bootstrapIframeApp.apply(this, arguments);
|
|
70045
|
+
}
|
|
70046
|
+
|
|
69564
70047
|
setup({
|
|
69565
70048
|
pkg: pkg
|
|
69566
70049
|
});
|
|
@@ -81139,13 +81622,21 @@ var index_es = /*#__PURE__*/Object.freeze({
|
|
|
81139
81622
|
vectorsRatio: vectorsRatio
|
|
81140
81623
|
});
|
|
81141
81624
|
|
|
81625
|
+
exports.AppEnvSender = AppEnvSender;
|
|
81142
81626
|
exports.AppFrame = AppFrame;
|
|
81143
81627
|
exports.AutoRefresh = AutoRefresh;
|
|
81144
81628
|
exports.CallLogger = CallLogger;
|
|
81145
81629
|
exports.ContextualHelp = ContextualHelp;
|
|
81146
81630
|
exports.Crumb = Crumb$1;
|
|
81631
|
+
exports.IframeAppRoot = IframeAppRoot;
|
|
81632
|
+
exports.IframeRouteSync = IframeRouteSync;
|
|
81633
|
+
exports.NavConfigSender = NavConfigSender;
|
|
81147
81634
|
exports.accessHelpers = accessHelpers$1;
|
|
81635
|
+
exports.bootstrapIframeApp = bootstrapIframeApp;
|
|
81148
81636
|
exports.fetcher = fetcher$1;
|
|
81149
81637
|
exports.iframeFacade = iframeFacade;
|
|
81638
|
+
exports.normalizeIframePath = normalizeIframePath;
|
|
81639
|
+
exports.registerEarlyLoadUriListener = registerEarlyLoadUriListener;
|
|
81640
|
+
exports.serializeNavItems = serializeNavItems;
|
|
81150
81641
|
exports.storage = storage$2;
|
|
81151
81642
|
//# sourceMappingURL=ops-tool-kit.js.map
|