@hawtio/react
Version:
A Hawtio reimplementation based on TypeScript + React.
1,452 lines (1,433 loc) • 1.52 MB
JavaScript
"use strict";
var __create = Object.create;
var __defProp = Object.defineProperty;
var __defProps = Object.defineProperties;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
var __getProtoOf = Object.getPrototypeOf;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __propIsEnum = Object.prototype.propertyIsEnumerable;
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
var __spreadValues = (a, b) => {
for (var prop in b || (b = {}))
if (__hasOwnProp.call(b, prop))
__defNormalProp(a, prop, b[prop]);
if (__getOwnPropSymbols)
for (var prop of __getOwnPropSymbols(b)) {
if (__propIsEnum.call(b, prop))
__defNormalProp(a, prop, b[prop]);
}
return a;
};
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
var __objRest = (source, exclude) => {
var target = {};
for (var prop in source)
if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
target[prop] = source[prop];
if (source != null && __getOwnPropSymbols)
for (var prop of __getOwnPropSymbols(source)) {
if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))
target[prop] = source[prop];
}
return target;
};
var __esm = (fn, res) => function __init() {
return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res;
};
var __commonJS = (cb, mod) => function __require() {
return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
};
var __export = (target, all) => {
for (var name in all)
__defProp(target, name, { get: all[name], enumerable: true });
};
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames(from))
if (!__hasOwnProp.call(to, key) && key !== except)
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
}
return to;
};
var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
// If the importer is in node compatibility mode or this is not an ESM
// file that has been converted to a CommonJS file using a Babel-
// compatible transform (i.e. "__esModule" has not been set), then set
// "default" to the CommonJS "module.exports" for node compatibility.
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
mod
));
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
var __async = (__this, __arguments, generator) => {
return new Promise((resolve, reject) => {
var fulfilled = (value) => {
try {
step(generator.next(value));
} catch (e) {
reject(e);
}
};
var rejected = (value) => {
try {
step(generator.throw(value));
} catch (e) {
reject(e);
}
};
var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
step((generator = generator.apply(__this, __arguments)).next());
});
};
// ../../node_modules/tslib/tslib.es6.mjs
var tslib_es6_exports = {};
__export(tslib_es6_exports, {
__addDisposableResource: () => __addDisposableResource,
__assign: () => __assign,
__asyncDelegator: () => __asyncDelegator,
__asyncGenerator: () => __asyncGenerator,
__asyncValues: () => __asyncValues,
__await: () => __await,
__awaiter: () => __awaiter,
__classPrivateFieldGet: () => __classPrivateFieldGet,
__classPrivateFieldIn: () => __classPrivateFieldIn,
__classPrivateFieldSet: () => __classPrivateFieldSet,
__createBinding: () => __createBinding,
__decorate: () => __decorate,
__disposeResources: () => __disposeResources,
__esDecorate: () => __esDecorate,
__exportStar: () => __exportStar,
__extends: () => __extends,
__generator: () => __generator,
__importDefault: () => __importDefault,
__importStar: () => __importStar,
__makeTemplateObject: () => __makeTemplateObject,
__metadata: () => __metadata,
__param: () => __param,
__propKey: () => __propKey,
__read: () => __read,
__rest: () => __rest,
__runInitializers: () => __runInitializers,
__setFunctionName: () => __setFunctionName,
__spread: () => __spread,
__spreadArray: () => __spreadArray,
__spreadArrays: () => __spreadArrays,
__values: () => __values,
default: () => tslib_es6_default
});
function __extends(d, b) {
if (typeof b !== "function" && b !== null)
throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
extendStatics(d, b);
function __() {
this.constructor = d;
}
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
}
function __rest(s, e) {
var t = {};
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
t[p] = s[p];
if (s != null && typeof Object.getOwnPropertySymbols === "function")
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
t[p[i]] = s[p[i]];
}
return t;
}
function __decorate(decorators, target, key, desc) {
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
}
function __param(paramIndex, decorator) {
return function(target, key) {
decorator(target, key, paramIndex);
};
}
function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {
function accept(f) {
if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected");
return f;
}
var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value";
var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null;
var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});
var _, done = false;
for (var i = decorators.length - 1; i >= 0; i--) {
var context = {};
for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p];
for (var p in contextIn.access) context.access[p] = contextIn.access[p];
context.addInitializer = function(f) {
if (done) throw new TypeError("Cannot add initializers after decoration has completed");
extraInitializers.push(accept(f || null));
};
var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);
if (kind === "accessor") {
if (result === void 0) continue;
if (result === null || typeof result !== "object") throw new TypeError("Object expected");
if (_ = accept(result.get)) descriptor.get = _;
if (_ = accept(result.set)) descriptor.set = _;
if (_ = accept(result.init)) initializers.unshift(_);
} else if (_ = accept(result)) {
if (kind === "field") initializers.unshift(_);
else descriptor[key] = _;
}
}
if (target) Object.defineProperty(target, contextIn.name, descriptor);
done = true;
}
function __runInitializers(thisArg, initializers, value) {
var useValue = arguments.length > 2;
for (var i = 0; i < initializers.length; i++) {
value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);
}
return useValue ? value : void 0;
}
function __propKey(x) {
return typeof x === "symbol" ? x : "".concat(x);
}
function __setFunctionName(f, name, prefix) {
if (typeof name === "symbol") name = name.description ? "[".concat(name.description, "]") : "";
return Object.defineProperty(f, "name", { configurable: true, value: prefix ? "".concat(prefix, " ", name) : name });
}
function __metadata(metadataKey, metadataValue) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue);
}
function __awaiter(thisArg, _arguments, P, generator) {
function adopt(value) {
return value instanceof P ? value : new P(function(resolve) {
resolve(value);
});
}
return new (P || (P = Promise))(function(resolve, reject) {
function fulfilled(value) {
try {
step(generator.next(value));
} catch (e) {
reject(e);
}
}
function rejected(value) {
try {
step(generator["throw"](value));
} catch (e) {
reject(e);
}
}
function step(result) {
result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);
}
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
}
function __generator(thisArg, body) {
var _ = { label: 0, sent: function() {
if (t[0] & 1) throw t[1];
return t[1];
}, trys: [], ops: [] }, f, y, t, g;
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() {
return this;
}), g;
function verb(n) {
return function(v) {
return step([n, v]);
};
}
function step(op) {
if (f) throw new TypeError("Generator is already executing.");
while (g && (g = 0, op[0] && (_ = 0)), _) try {
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
if (y = 0, t) op = [op[0] & 2, t.value];
switch (op[0]) {
case 0:
case 1:
t = op;
break;
case 4:
_.label++;
return { value: op[1], done: false };
case 5:
_.label++;
y = op[1];
op = [0];
continue;
case 7:
op = _.ops.pop();
_.trys.pop();
continue;
default:
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
_ = 0;
continue;
}
if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {
_.label = op[1];
break;
}
if (op[0] === 6 && _.label < t[1]) {
_.label = t[1];
t = op;
break;
}
if (t && _.label < t[2]) {
_.label = t[2];
_.ops.push(op);
break;
}
if (t[2]) _.ops.pop();
_.trys.pop();
continue;
}
op = body.call(thisArg, _);
} catch (e) {
op = [6, e];
y = 0;
} finally {
f = t = 0;
}
if (op[0] & 5) throw op[1];
return { value: op[0] ? op[1] : void 0, done: true };
}
}
function __exportStar(m, o) {
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);
}
function __values(o) {
var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
if (m) return m.call(o);
if (o && typeof o.length === "number") return {
next: function() {
if (o && i >= o.length) o = void 0;
return { value: o && o[i++], done: !o };
}
};
throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
}
function __read(o, n) {
var m = typeof Symbol === "function" && o[Symbol.iterator];
if (!m) return o;
var i = m.call(o), r, ar = [], e;
try {
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
} catch (error) {
e = { error };
} finally {
try {
if (r && !r.done && (m = i["return"])) m.call(i);
} finally {
if (e) throw e.error;
}
}
return ar;
}
function __spread() {
for (var ar = [], i = 0; i < arguments.length; i++)
ar = ar.concat(__read(arguments[i]));
return ar;
}
function __spreadArrays() {
for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;
for (var r = Array(s), k = 0, i = 0; i < il; i++)
for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
r[k] = a[j];
return r;
}
function __spreadArray(to, from, pack) {
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
if (ar || !(i in from)) {
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
ar[i] = from[i];
}
}
return to.concat(ar || Array.prototype.slice.call(from));
}
function __await(v) {
return this instanceof __await ? (this.v = v, this) : new __await(v);
}
function __asyncGenerator(thisArg, _arguments, generator) {
if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
var g = generator.apply(thisArg, _arguments || []), i, q = [];
return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function() {
return this;
}, i;
function verb(n) {
if (g[n]) i[n] = function(v) {
return new Promise(function(a, b) {
q.push([n, v, a, b]) > 1 || resume(n, v);
});
};
}
function resume(n, v) {
try {
step(g[n](v));
} catch (e) {
settle(q[0][3], e);
}
}
function step(r) {
r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r);
}
function fulfill(value) {
resume("next", value);
}
function reject(value) {
resume("throw", value);
}
function settle(f, v) {
if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]);
}
}
function __asyncDelegator(o) {
var i, p;
return i = {}, verb("next"), verb("throw", function(e) {
throw e;
}), verb("return"), i[Symbol.iterator] = function() {
return this;
}, i;
function verb(n, f) {
i[n] = o[n] ? function(v) {
return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v;
} : f;
}
}
function __asyncValues(o) {
if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
var m = o[Symbol.asyncIterator], i;
return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function() {
return this;
}, i);
function verb(n) {
i[n] = o[n] && function(v) {
return new Promise(function(resolve, reject) {
v = o[n](v), settle(resolve, reject, v.done, v.value);
});
};
}
function settle(resolve, reject, d, v) {
Promise.resolve(v).then(function(v2) {
resolve({ value: v2, done: d });
}, reject);
}
}
function __makeTemplateObject(cooked, raw) {
if (Object.defineProperty) {
Object.defineProperty(cooked, "raw", { value: raw });
} else {
cooked.raw = raw;
}
return cooked;
}
function __importStar(mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) {
for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
}
__setModuleDefault(result, mod);
return result;
}
function __importDefault(mod) {
return mod && mod.__esModule ? mod : { default: mod };
}
function __classPrivateFieldGet(receiver, state, kind, f) {
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
}
function __classPrivateFieldSet(receiver, state, value, kind, f) {
if (kind === "m") throw new TypeError("Private method is not writable");
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
return kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value), value;
}
function __classPrivateFieldIn(state, receiver) {
if (receiver === null || typeof receiver !== "object" && typeof receiver !== "function") throw new TypeError("Cannot use 'in' operator on non-object");
return typeof state === "function" ? receiver === state : state.has(receiver);
}
function __addDisposableResource(env, value, async) {
if (value !== null && value !== void 0) {
if (typeof value !== "object" && typeof value !== "function") throw new TypeError("Object expected.");
var dispose;
if (async) {
if (!Symbol.asyncDispose) throw new TypeError("Symbol.asyncDispose is not defined.");
dispose = value[Symbol.asyncDispose];
}
if (dispose === void 0) {
if (!Symbol.dispose) throw new TypeError("Symbol.dispose is not defined.");
dispose = value[Symbol.dispose];
}
if (typeof dispose !== "function") throw new TypeError("Object not disposable.");
env.stack.push({ value, dispose, async });
} else if (async) {
env.stack.push({ async: true });
}
return value;
}
function __disposeResources(env) {
function fail(e) {
env.error = env.hasError ? new _SuppressedError(e, env.error, "An error was suppressed during disposal.") : e;
env.hasError = true;
}
function next() {
while (env.stack.length) {
var rec = env.stack.pop();
try {
var result = rec.dispose && rec.dispose.call(rec.value);
if (rec.async) return Promise.resolve(result).then(next, function(e) {
fail(e);
return next();
});
} catch (e) {
fail(e);
}
}
if (env.hasError) throw env.error;
}
return next();
}
var extendStatics, __assign, __createBinding, __setModuleDefault, _SuppressedError, tslib_es6_default;
var init_tslib_es6 = __esm({
"../../node_modules/tslib/tslib.es6.mjs"() {
"use strict";
extendStatics = function(d, b) {
extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d2, b2) {
d2.__proto__ = b2;
} || function(d2, b2) {
for (var p in b2) if (Object.prototype.hasOwnProperty.call(b2, p)) d2[p] = b2[p];
};
return extendStatics(d, b);
};
__assign = function() {
__assign = Object.assign || function __assign2(t) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i];
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
}
return t;
};
return __assign.apply(this, arguments);
};
__createBinding = Object.create ? function(o, m, k, k2) {
if (k2 === void 0) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() {
return m[k];
} };
}
Object.defineProperty(o, k2, desc);
} : function(o, m, k, k2) {
if (k2 === void 0) k2 = k;
o[k2] = m[k];
};
__setModuleDefault = Object.create ? function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
} : function(o, v) {
o["default"] = v;
};
_SuppressedError = typeof SuppressedError === "function" ? SuppressedError : function(error, suppressed, message) {
var e = new Error(message);
return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
};
tslib_es6_default = {
__extends,
__assign,
__rest,
__decorate,
__param,
__metadata,
__awaiter,
__generator,
__createBinding,
__exportStar,
__values,
__read,
__spread,
__spreadArrays,
__spreadArray,
__await,
__asyncGenerator,
__asyncDelegator,
__asyncValues,
__makeTemplateObject,
__importStar,
__importDefault,
__classPrivateFieldGet,
__classPrivateFieldSet,
__classPrivateFieldIn,
__addDisposableResource,
__disposeResources
};
}
});
// ../../node_modules/@patternfly/react-icons/dist/js/createIcon.js
var require_createIcon = __commonJS({
"../../node_modules/@patternfly/react-icons/dist/js/createIcon.js"(exports2) {
"use strict";
Object.defineProperty(exports2, "__esModule", { value: true });
exports2.createIcon = void 0;
var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports));
var React84 = tslib_1.__importStar(require("react"));
var currentId2 = 0;
function createIcon2({ name, xOffset = 0, yOffset = 0, width, height, svgPath }) {
var _a2;
return _a2 = class SVGIcon extends React84.Component {
constructor() {
super(...arguments);
this.id = `icon-title-${currentId2++}`;
}
render() {
const _b2 = this.props, { title, className } = _b2, props = tslib_1.__rest(_b2, ["title", "className"]);
const classes = className ? `pf-v5-svg ${className}` : "pf-v5-svg";
const hasTitle = Boolean(title);
const viewBox = [xOffset, yOffset, width, height].join(" ");
return React84.createElement(
"svg",
Object.assign({ className: classes, viewBox, fill: "currentColor", "aria-labelledby": hasTitle ? this.id : null, "aria-hidden": hasTitle ? null : true, role: "img", width: "1em", height: "1em" }, props),
hasTitle && React84.createElement("title", { id: this.id }, title),
React84.createElement("path", { d: svgPath })
);
}
}, _a2.displayName = name, _a2;
}
exports2.createIcon = createIcon2;
}
});
// ../../node_modules/@patternfly/react-icons/dist/js/icons/ellipsis-v-icon.js
var require_ellipsis_v_icon = __commonJS({
"../../node_modules/@patternfly/react-icons/dist/js/icons/ellipsis-v-icon.js"(exports2) {
"use strict";
exports2.__esModule = true;
exports2.EllipsisVIconConfig = {
name: "EllipsisVIcon",
height: 512,
width: 192,
svgPath: "M96 184c39.8 0 72 32.2 72 72s-32.2 72-72 72-72-32.2-72-72 32.2-72 72-72zM24 80c0 39.8 32.2 72 72 72s72-32.2 72-72S135.8 8 96 8 24 40.2 24 80zm0 352c0 39.8 32.2 72 72 72s72-32.2 72-72-32.2-72-72-72-72 32.2-72 72z",
yOffset: 0,
xOffset: 0
};
exports2.EllipsisVIcon = require_createIcon().createIcon(exports2.EllipsisVIconConfig);
exports2["default"] = exports2.EllipsisVIcon;
}
});
// ../../node_modules/@patternfly/react-styles/css/components/ExpandableSection/expandable-section.css
var require_expandable_section = __commonJS({
"../../node_modules/@patternfly/react-styles/css/components/ExpandableSection/expandable-section.css"(exports2, module2) {
module2.exports = {};
}
});
// ../../node_modules/@patternfly/react-styles/css/components/ExpandableSection/expandable-section.js
var require_expandable_section2 = __commonJS({
"../../node_modules/@patternfly/react-styles/css/components/ExpandableSection/expandable-section.js"(exports2) {
"use strict";
exports2.__esModule = true;
require_expandable_section();
exports2.default = {
"dirRtl": "pf-v5-m-dir-rtl",
"expandableSection": "pf-v5-c-expandable-section",
"expandableSectionContent": "pf-v5-c-expandable-section__content",
"expandableSectionToggle": "pf-v5-c-expandable-section__toggle",
"expandableSectionToggleIcon": "pf-v5-c-expandable-section__toggle-icon",
"expandableSectionToggleText": "pf-v5-c-expandable-section__toggle-text",
"modifiers": {
"expanded": "pf-m-expanded",
"detached": "pf-m-detached",
"truncate": "pf-m-truncate",
"limitWidth": "pf-m-limit-width",
"displayLg": "pf-m-display-lg",
"indented": "pf-m-indented",
"active": "pf-m-active",
"expandTop": "pf-m-expand-top"
}
};
}
});
// src/index.ts
var index_exports = {};
__export(index_exports, {
ADD: () => ADD,
AttributeModal: () => AttributeModal,
AttributeTable: () => AttributeTable,
Attributes: () => Attributes,
Chart: () => Chart,
DEFAULT_APP_NAME: () => DEFAULT_APP_NAME,
DEFAULT_AUTO_REFRESH: () => DEFAULT_AUTO_REFRESH,
DEFAULT_LOGIN_TITLE: () => DEFAULT_LOGIN_TITLE,
DEFAULT_MAX_COLLECTION_SIZE: () => DEFAULT_MAX_COLLECTION_SIZE,
DEFAULT_MAX_DEPTH: () => DEFAULT_MAX_DEPTH,
DEFAULT_UPDATE_RATE: () => DEFAULT_UPDATE_RATE,
DELETE: () => DELETE,
EVENT_LOGIN: () => EVENT_LOGIN,
EVENT_LOGOUT: () => EVENT_LOGOUT,
EVENT_NOTIFY: () => EVENT_NOTIFY,
EVENT_PLUGINS_UPDATED: () => EVENT_PLUGINS_UPDATED,
EVENT_REFRESH: () => EVENT_REFRESH,
ExpandableText: () => ExpandableText,
FilteredTable: () => FilteredTable,
HAWTCONFIG_JSON: () => HAWTCONFIG_JSON,
Hawtio: () => Hawtio,
HawtioEmptyCard: () => HawtioEmptyCard,
HawtioLoadingCard: () => HawtioLoadingCard,
HawtioLoadingPage: () => HawtioLoadingPage,
IMPORT: () => IMPORT,
INITIAL_CONNECTION: () => INITIAL_CONNECTION,
Icons: () => Icons,
JmxContentMBeans: () => JmxContentMBeans,
JolokiaListMethod: () => JolokiaListMethod,
Logger: () => Logger,
MBEAN_NODE_ID_SEPARATOR: () => MBEAN_NODE_ID_SEPARATOR,
MBeanNode: () => MBeanNode,
MBeanTree: () => MBeanTree,
Operations: () => Operations,
PARAM_KEY_CONNECTION: () => PARAM_KEY_CONNECTION,
PARAM_KEY_REDIRECT: () => PARAM_KEY_REDIRECT,
PUBLIC_USER: () => PUBLIC_USER,
PluginNodeSelectionContext: () => PluginNodeSelectionContext,
PluginTreeViewToolbar: () => PluginTreeViewToolbar,
PropertyList: () => PropertyList,
RESET: () => RESET,
SESSION_KEY_CURRENT_CONNECTION: () => SESSION_KEY_CURRENT_CONNECTION,
STORAGE_KEY_AUTO_REFRESH: () => STORAGE_KEY_AUTO_REFRESH,
STORAGE_KEY_CHILD_LOGGERS: () => STORAGE_KEY_CHILD_LOGGERS,
STORAGE_KEY_JOLOKIA_OPTIONS: () => STORAGE_KEY_JOLOKIA_OPTIONS,
STORAGE_KEY_LOG_LEVEL: () => STORAGE_KEY_LOG_LEVEL,
STORAGE_KEY_UPDATE_RATE: () => STORAGE_KEY_UPDATE_RATE,
UPDATE: () => UPDATE,
__testing__: () => __testing__,
camel: () => camel,
configManager: () => configManager,
connect: () => connect,
connectService: () => connectService,
consoleStatus: () => consoleStatus,
eventService: () => eventService,
hawtio: () => hawtio,
helpRegistry: () => helpRegistry,
isJmxDomain: () => isJmxDomain,
isJmxDomains: () => isJmxDomains,
isMBeanInfo: () => isMBeanInfo,
isMBeanInfoError: () => isMBeanInfoError,
isUniversalHeaderItem: () => isUniversalHeaderItem,
jmx: () => jmx,
jolokiaService: () => jolokiaService,
keycloak: () => keycloak,
logs: () => logs,
oidc: () => oidc2,
preferencesRegistry: () => preferencesRegistry,
quartz: () => quartz,
rbac: () => rbac,
reducer: () => reducer,
registerPlugins: () => registerPlugins,
runtime: () => runtime,
springboot: () => springboot,
treeProcessorRegistry: () => treeProcessorRegistry,
useHawtconfig: () => useHawtconfig,
usePluginNodeSelected: () => usePluginNodeSelected,
usePlugins: () => usePlugins,
useUser: () => useUser,
userService: () => userService,
workspace: () => workspace
});
module.exports = __toCommonJS(index_exports);
// src/core/index.ts
var core_exports = {};
__export(core_exports, {
DEFAULT_APP_NAME: () => DEFAULT_APP_NAME,
DEFAULT_LOGIN_TITLE: () => DEFAULT_LOGIN_TITLE,
EVENT_LOGIN: () => EVENT_LOGIN,
EVENT_LOGOUT: () => EVENT_LOGOUT,
EVENT_NOTIFY: () => EVENT_NOTIFY,
EVENT_PLUGINS_UPDATED: () => EVENT_PLUGINS_UPDATED,
EVENT_REFRESH: () => EVENT_REFRESH,
HAWTCONFIG_JSON: () => HAWTCONFIG_JSON,
Logger: () => Logger,
STORAGE_KEY_CHILD_LOGGERS: () => STORAGE_KEY_CHILD_LOGGERS,
STORAGE_KEY_LOG_LEVEL: () => STORAGE_KEY_LOG_LEVEL,
configManager: () => configManager,
eventService: () => eventService,
hawtio: () => hawtio,
isUniversalHeaderItem: () => isUniversalHeaderItem,
useHawtconfig: () => useHawtconfig,
usePlugins: () => usePlugins
});
// src/core/logging.ts
var logging_exports = {};
__export(logging_exports, {
Logger: () => Logger,
STORAGE_KEY_CHILD_LOGGERS: () => STORAGE_KEY_CHILD_LOGGERS,
STORAGE_KEY_LOG_LEVEL: () => STORAGE_KEY_LOG_LEVEL
});
// src/util/strings.ts
function isBlank(str) {
if (str === void 0 || str === null) {
return true;
}
if (typeof str !== "string") {
return false;
}
return str.trim().length === 0;
}
function toString(obj) {
if (!obj) {
return "{}";
}
const strs = Object.entries(obj).map(([key, value]) => {
let obscured = value;
if (key.toLowerCase() === "password") {
obscured = obfuscate(value);
} else if (typeof value === "object") {
obscured = toString(obscured);
}
return `${key}: ${obscured}`;
});
return `{ ${strs.join(", ")} }`;
}
function obfuscate(str) {
if (typeof str !== "string") {
return "";
}
return str.split("").map((_) => "*").join("");
}
function trimStart(text, chars) {
return text.replace(new RegExp(`^[${chars}]+`, "g"), "");
}
function trimEnd(text, chars) {
return text.replace(new RegExp(`[${chars}]+$`, "g"), "");
}
function trimQuotes(text) {
if (text && text.length > 0) {
const headTrimmed = trimStart(text, `'"`);
if (headTrimmed.length < text.length) {
return trimEnd(headTrimmed, `'"`);
}
}
return text;
}
function stringSorter(a, b, sortDesc) {
let res = a.localeCompare(b);
if (sortDesc) {
res *= -1;
}
return res;
}
function parseBoolean(value) {
if (!value) return false;
return /^true$/i.test(value) || parseInt(value) === 1;
}
function humanizeLabels(str) {
return str.split("-").filter((str2) => !isBlank(str2)).map((str2) => str2.replace(/^./, (str3) => str3.toUpperCase())).join(" ").replace(/([a-z])([A-Z])/g, "$1 $2").replace(/\b([A-Z]+)([A-Z])([a-z])/, "$1 $2$3").replace("M Bean", "MBean").replace("Mbean", "MBean").replace(/^./, (str2) => str2.toUpperCase()).replace(/ +/, " ").trim();
}
function matchWithWildcard(value, pattern) {
if (!pattern.includes("*")) {
return value === pattern;
}
const rule = pattern.split("*").map((s) => s.replace(/([.*+?^=!:${}()|[\]/\\])/g, "\\$1")).join(".*");
const regexp = new RegExp(`^${rule}$`, "i");
return value.match(regexp) !== null;
}
// src/core/logging.ts
var import_js_logger = __toESM(require("js-logger"));
var import_superstruct = require("superstruct");
__reExport(logging_exports, require("js-logger"));
var STORAGE_KEY_LOG_LEVEL = "core.logging.logLevel";
var STORAGE_KEY_CHILD_LOGGERS = "core.logging.childLoggers";
var LocalStorageHawtioLogger = class {
constructor() {
this.TRACE = import_js_logger.default.TRACE;
this.DEBUG = import_js_logger.default.DEBUG;
this.INFO = import_js_logger.default.INFO;
this.TIME = import_js_logger.default.TIME;
this.WARN = import_js_logger.default.WARN;
this.ERROR = import_js_logger.default.ERROR;
this.OFF = import_js_logger.default.OFF;
this.trace = import_js_logger.default.trace;
this.debug = import_js_logger.default.debug;
this.info = import_js_logger.default.info;
this.log = import_js_logger.default.log;
this.warn = import_js_logger.default.warn;
this.error = import_js_logger.default.error;
this.time = import_js_logger.default.time;
this.timeEnd = import_js_logger.default.timeEnd;
this.getLevel = import_js_logger.default.getLevel;
this.enabledFor = import_js_logger.default.enabledFor;
this.useDefaults = import_js_logger.default.useDefaults;
this.setHandler = import_js_logger.default.setHandler;
// 'typeof jsLogger.createDefaultHandler' is a hack as otherwise tsc complains TS4029 error
this.createDefaultHandler = import_js_logger.default.createDefaultHandler;
this.LOG_LEVEL_MAP = {
TRACE: this.TRACE,
DEBUG: this.DEBUG,
INFO: this.INFO,
TIME: this.TIME,
WARN: this.WARN,
ERROR: this.ERROR,
OFF: this.OFF
};
this.loggers = {};
try {
const logLevel = this.loadLogLevel();
import_js_logger.default.setLevel(logLevel);
} catch (e) {
console.error("Failed to load log level from local storage:", e);
}
try {
const childLoggers = this.loadChildLoggers();
childLoggers.forEach((logger) => this.get(logger.name).setLevel(logger.filterLevel));
} catch (e) {
console.error("Failed to load child loggers from local storage:", e);
}
this.setHandler(this.createDefaultHandler());
}
get(name) {
let logger = this.loggers[name];
if (logger) {
return logger;
}
logger = import_js_logger.default.get(name);
this.loggers[name] = logger;
return logger;
}
setLevel(level) {
const logLevel = this.toLogLevel(level);
import_js_logger.default.setLevel(logLevel);
this.saveLogLevel(logLevel);
}
toLogLevel(level) {
if (typeof level !== "string") {
return level;
}
const logLevel = this.LOG_LEVEL_MAP[level];
if (!logLevel) {
console.error("Unknown log level:", level);
return this.INFO;
}
return logLevel;
}
loadLogLevel() {
const logLevel = localStorage.getItem(STORAGE_KEY_LOG_LEVEL);
return logLevel ? JSON.parse(logLevel) : this.INFO;
}
saveLogLevel(level) {
localStorage.setItem(STORAGE_KEY_LOG_LEVEL, JSON.stringify(level));
}
loadChildLoggers() {
const childLoggers = localStorage.getItem(STORAGE_KEY_CHILD_LOGGERS);
return childLoggers ? JSON.parse(childLoggers) : [];
}
saveChildLoggers(loggers) {
localStorage.setItem(STORAGE_KEY_CHILD_LOGGERS, JSON.stringify(loggers));
}
getChildLoggers() {
const childLoggers = this.loadChildLoggers();
childLoggers.sort((a, b) => stringSorter(a.name, b.name));
return childLoggers;
}
getAvailableChildLoggers() {
const allLoggers = [];
Object.values(this.loggers).forEach((logger) => {
if ((0, import_superstruct.is)(logger, (0, import_superstruct.type)({ context: (0, import_superstruct.object)() }))) {
allLoggers.push(logger.context);
} else {
console.error("Logger does not have context:", logger);
}
});
const childLoggers = this.getChildLoggers();
const availableLoggers = allLoggers.filter((logger) => !childLoggers.some((l) => l.name === logger.name));
availableLoggers.sort((a, b) => stringSorter(a.name, b.name));
return availableLoggers;
}
addChildLogger(logger) {
const childLoggers = this.getChildLoggers();
childLoggers.push(logger);
this.saveChildLoggers(childLoggers);
this.get(logger.name).setLevel(logger.filterLevel);
}
updateChildLogger(name, level) {
const logLevel = this.toLogLevel(level);
const updated = this.getChildLoggers().map((logger) => {
if (logger.name === name) {
logger.filterLevel = logLevel;
}
return logger;
});
this.saveChildLoggers(updated);
this.get(name).setLevel(logLevel);
}
removeChildLogger(logger) {
const removed = this.getChildLoggers().filter((l) => l.name !== logger.name);
this.saveChildLoggers(removed);
this.get(logger.name).setLevel(this.getLevel());
}
};
var Logger = new LocalStorageHawtioLogger();
// src/core/config-manager.ts
var log = Logger.get("hawtio-core-config");
var DEFAULT_APP_NAME = "Hawtio Management Console";
var DEFAULT_LOGIN_TITLE = "Log in to your account";
var HAWTCONFIG_JSON = "hawtconfig.json";
var ConfigManager = class {
reset() {
this.config = void 0;
}
setHawtconfig(config) {
this.config = Promise.resolve(config);
}
getHawtconfig() {
if (this.config) {
return this.config;
}
this.config = this.loadConfig();
return this.config;
}
loadConfig() {
return __async(this, null, function* () {
log.info("Loading", HAWTCONFIG_JSON);
try {
const res = yield fetch(HAWTCONFIG_JSON);
if (!res.ok) {
log.error("Failed to fetch", HAWTCONFIG_JSON, "-", res.status, res.statusText);
return {};
}
const config = yield res.json();
log.debug(HAWTCONFIG_JSON, "=", config);
log.info("Loaded", HAWTCONFIG_JSON);
return config;
} catch (err) {
log.error("Error fetching", HAWTCONFIG_JSON, "-", err);
return {};
}
});
}
configure(configurer) {
return __async(this, null, function* () {
const config = yield this.getHawtconfig();
configurer(config);
});
}
applyBranding() {
return __async(this, null, function* () {
const { branding } = yield this.getHawtconfig();
if (!branding) {
return false;
}
log.info("Apply branding", branding);
let applied = false;
if (branding.appName) {
log.info("Updating title -", branding.appName);
document.title = branding.appName;
applied = true;
}
if (branding.css) {
this.updateHref("#branding", branding.css, true);
applied = true;
}
if (branding.favicon) {
this.updateHref("#favicon", branding.favicon);
applied = true;
}
return applied;
});
}
updateHref(id, path, moveToLast = false) {
var _a2;
log.info("Updating href for", id, "-", path, moveToLast);
const elm = document.querySelector(id);
if (!elm) {
return;
}
if ("disabled" in elm) {
elm.disabled = true;
}
elm.setAttribute("href", path);
if (moveToLast) {
elm.remove();
(_a2 = document.querySelector("head")) == null ? void 0 : _a2.append(elm);
}
if ("disabled" in elm) {
elm.disabled = false;
}
}
isRouteEnabled(path) {
return __async(this, null, function* () {
const { disabledRoutes } = yield this.getHawtconfig();
return !disabledRoutes || !disabledRoutes.includes(path);
});
}
filterEnabledPlugins(plugins) {
return __async(this, null, function* () {
const enabledPlugins = [];
for (const plugin of plugins) {
if (plugin.path == null && (yield plugin.isActive()) || (yield this.isRouteEnabled(plugin.path))) {
enabledPlugins.push(plugin);
} else {
log.debug(`Plugin "${plugin.id}" disabled by hawtconfig.json`);
}
}
return enabledPlugins;
});
}
addProductInfo(name, value) {
return __async(this, null, function* () {
const config = yield this.getHawtconfig();
if (!config.about) {
config.about = {};
}
if (!config.about.productInfo) {
config.about.productInfo = [];
}
config.about.productInfo.push({ name, value });
});
}
};
var configManager = new ConfigManager();
// src/auth/globals.ts
var moduleName = "hawtio-auth";
var log2 = Logger.get(moduleName);
var PUBLIC_USER = "public";
var PATH_USER = "user";
var PATH_LOGOUT = "auth/logout";
// src/auth/hooks.ts
var import_react = require("react");
// src/auth/user-service.ts
var UserService = class {
constructor() {
this.resolveUser = () => {
};
this.fetchUserHooks = {};
this.logoutHooks = {};
this.token = null;
this.user = new Promise((resolve) => {
this.resolveUser = resolve;
});
}
addFetchUserHook(name, hook) {
this.fetchUserHooks[name] = hook;
}
addLogoutHook(name, hook) {
this.logoutHooks[name] = hook;
}
/**
* Sync login status with the server by fetching login user.
*/
fetchUser(retry = true, proceed) {
return __async(this, null, function* () {
for (const [name, fetchUser] of Object.entries(this.fetchUserHooks)) {
const resolved = yield fetchUser(this.resolveUser, proceed);
if (proceed && !proceed()) {
return;
}
log2.debug("Invoke fetch user hook", name, ": resolved =", resolved);
if (resolved) {
eventService.login();
return;
}
}
try {
const res = yield fetch(PATH_USER);
if (!res.ok) {
log2.error("Failed to fetch user:", res.status, res.statusText);
if (retry && res.status === 403) {
yield new Promise((resolve) => setTimeout(resolve, 1e3));
return this.fetchUser(false);
}
this.resolveUser({ username: PUBLIC_USER, isLogin: false });
return;
}
const username = yield res.json();
log2.info("Logged in as:", username);
this.resolveUser({ username, isLogin: true });
eventService.login();
} catch (err) {
log2.debug("Failed to get logged-in user from", PATH_USER, "-", err);
this.resolveUser({ username: PUBLIC_USER, isLogin: false });
}
});
}
getUsername() {
return __async(this, null, function* () {
return (yield this.user).username;
});
}
isLogin() {
return __async(this, null, function* () {
return (yield this.user).isLogin;
});
}
isLoading() {
return __async(this, null, function* () {
var _a2;
const u = yield this.user;
return (_a2 = u.isLoading) != null ? _a2 : false;
});
}
getToken() {
return this.token;
}
setToken(token) {
this.token = token;
}
logout() {
return __async(this, null, function* () {
const login = yield this.user;
if (!login.isLogin) {
log2.debug("Not logged in");
return;
}
log2.info("Log out:", login.username);
eventService.logout();
for (const [name, logout] of Object.entries(this.logoutHooks)) {
const result = yield logout();
log2.debug("Invoke logout hook", name, ": result =", result);
if (result) {
return;
}
}
log2.debug("Redirect to:", PATH_LOGOUT);
window.location.href = PATH_LOGOUT;
});
}
};
var userService = new UserService();
var __testing__ = {
UserService
};
// src/auth/hooks.ts
function useUser() {
const [username, setUsername] = (0, import_react.useState)("");
const [isLogin, setIsLogin] = (0, import_react.useState)(false);
const [userLoaded, setUserLoaded] = (0, import_react.useState)(false);
const [userLoading, setUserLoading] = (0, import_react.useState)(true);
(0, import_react.useEffect)(() => {
let proceed = true;
const isProceed = () => proceed;
const fetchUser = () => __async(this, null, function* () {
yield userService.fetchUser(true, () => isProceed());
const username2 = yield userService.getUsername();
const isLogin2 = yield userService.isLogin();
const isLoading = yield userService.isLoading();
if (isProceed()) {
setUsername(username2);
setIsLogin(isLogin2);
setUserLoading(isLoading);
setUserLoaded(true);
}
});
fetchUser();
return () => {
proceed = false;
};
}, []);
return { username, isLogin, userLoaded, userLoading };
}
// src/core/core.ts
var import_utilities = require("@module-federation/utilities");
// src/core/event-service.ts
var import_eventemitter3 = __toESM(require("eventemitter3"));
var log3 = Logger.get("hawtio-core-event");
var EVENT_NOTIFY = "notify";
var EVENT_LOGIN = "login";
var EVENT_LOGOUT = "logout";
var EVENT_REFRESH = "refresh";
var EVENT_PLUGINS_UPDATED = "pluginsUpdated";
var DEFAULT_DURATION = 8e3;
var EventService = class {
constructor() {
this.eventEmitter = new import_eventemitter3.default();
}
notify(notification) {
if (!notification.duration) {
notification.duration = DEFAULT_DURATION;
}
this.eventEmitter.emit(EVENT_NOTIFY, notification);
}
onNotify(listener) {
this.eventEmitter.on(EVENT_NOTIFY, listener);
log3.debug("Number of listeners on", EVENT_NOTIFY, "=", this.eventEmitter.listenerCount(EVENT_NOTIFY));
}
login() {
this.eventEmitter.emit(EVENT_LOGIN);
}
onLogin(listener) {
this.eventEmitter.on(EVENT_LOGIN, listener);
}
logout() {
this.eventEmitter.emit(EVENT_LOGOUT);
}
onLogout(listener) {
this.eventEmitter.on(EVENT_LOGOUT, listener);
}
refresh() {
this.eventEmitter.emit(EVENT_REFRESH);
}
onRefresh(listener) {
this.eventEmitter.on(EVENT_REFRESH, listener);
}
pluginsUpdated() {
this.eventEmitter.emit(EVENT_PLUGINS_UPDATED);
}
onPluginsUpdated(listener) {
this.eventEmitter.on(EVENT_PLUGINS_UPDATED, listener);
}
removeListener(event, listener) {
this.eventEmitter.removeListener(event, listener);
}
};
var eventService = new EventService();
// src/core/globals.ts
var moduleName2 = "hawtio-core";
var log4 = Logger.get(moduleName2);
// src/core/core.ts
function isUniversalHeaderItem(item) {
return "component" in item && "universal" in item && typeof item.universal === "boolean";
}
var DEFAULT_PLUGIN_ORDER = 100;
var DEFAULT_PLUGIN_ENTRY = "plugin";
var HawtioCore = class {
constructor() {
/**
* List of URLs that the plugin loader will try and discover plugins from.
*/
this.urls = [];
/**
* Holds all of the Hawtio plugins that need to be bootstrapped.
*/
this.plugins = {};
}
/**
* Sets the base path of the Hawtio console.
* If the given path includes trailing '/', it will be trimmed.
*/
setBasePath(path) {
if (path.length > 1 && path.endsWith("/")) {
this.basePath = path.slice(0, -1);
} else {
this.basePath = path;
}
}
/**
* Returns the base path of the Hawtio console without trailing '/'.
*/
getBasePath() {
if (!this.basePath) {
const basePath = this.documentBase();
log4.info("Base path from html head:", basePath);
if (basePath && basePath.length > 1 && basePath.endsWith("/")) {
this.basePath = basePath.slice(0, -1);
} else {
this.basePath = basePath;
}
}
return this.basePath;
}
documentBase() {
var _a2;
const base = document.querySelector("head base");
if (base) {
return (_a2 = base.getAttribute("href")) != null ? _a2 : void 0;
}
return void 0;
}
/**
* Adds a module to the list of modules to bootstrap.
*/
addPlugin(plugin) {
log4.info("Add plugin:", plugin.id);
if (this.plugins[plugin.id]) {
throw new Error(`Plugin "${plugin.id}" already exists`);
}
this.plugins[plugin.id] = plugin;
return this;
}
/**
* Adds a URL for discovering plugins.
*/
addUrl(url) {
log4.info("Add URL:", url);
this.urls.push(url);
return this;
}
/**
* Bootstraps Hawtio.
*/
bootstrap() {
return __async(this, null, function* () {
log4.info("Bootstrapping Hawtio...");
yield this.loadPlugins();
const brandingApplied = yield configManager.applyBranding();
log4.info("Branding applied:", brandingApplied);
log4.info("Bootstrapped Hawtio");
});
}
/**
* Downloads plugins from any configured URLs and load them.
* It is invoked at Hawtio's bootstrapping.
*
* This plugin mechanism is implemented based on Webpack Module Federation.
* https://module-federation.github.io/
*/
loadPlugins() {
return __async(this, null, function* () {
if (this.urls.length === 0) {
log4.info("No URLs provided to load external plugins");
return;
}
const numBefore = Object.keys(this.plugins).length;
log4.info(numBefore, "plugins before loading:", __spreadValues({}, this.plugins));
yield Promise.all(this.urls.map(this.loadExternalPlugins));
const numAfter = Object.keys(this.plugins).length;
log4.info(numAfter, "plugins after loaded:", this.plugins);
if (numBefore !== numAfter) {
log4.debug("Notify plugins update");
eventService.pluginsUpdated();
}
});
}
/**
* Loads external plugins from the given URL. The URL endpoint is expected to
* return an array of HawtioRemote objects.
*/
loadExternalPlugins(url) {
return __async(this, null, function* () {
log4.debug("Trying url:", url);
try {
const res = yield fetch(url);
if (!res.ok) {
log4.error("Failed to fetch url:", url, "-", res.status, res.statusText);
return;
}
const remotes = yield res.json();
log4.debug("Loaded remotes from url:", url, "=", remotes);
yield Promise.all(
remotes.map((remote) => __async(this, null, function* () {
log4.debug("Loading remote", remote);
try {
const plugin = yield (0, import_utilities.importRemote)(remote);
const entryFn = plugin[remote.pluginEntry || DEFAULT_PLUGIN_ENTRY];
if (!entryFn) {
throw new Error(`Plugin entry not found: ${remote.pluginEntry || DEFAULT_PLUGIN_ENTRY}`);
}
entryFn();
log4.debug("Loaded remote", remote);
} catch (err) {
log4.error("Error loading remote:", remote, "-", err);
}
}))
);
} catch (err) {
log4.error("Error fetching url:", url, "-", err);
}
});
}
getPlugins() {
return Object.values(this.plugins);
}
/**
* Resolves which of registered plugins are active with the current environment.
*
* There are two types of plugin: normal plugin and login plugin.
* If it's normal, it's only resolved when the user is already logged in.
* If it's login, it's only resolved when the user is not logged in yet,