UNPKG

@hawtio/react

Version:

A Hawtio reimplementation based on TypeScript + React.

1,452 lines (1,433 loc) 1.52 MB
"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,