@k8slens/extensions 5.4.1-git.1077a949ec.0 → 5.4.1-git.39deac47ae.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (75) hide show
  1. package/dist/src/common/ipc/native-theme.d.ts +6 -0
  2. package/dist/src/common/k8s-api/api-manager.d.ts +3 -3
  3. package/dist/src/common/k8s-api/endpoints/helm-charts.api.d.ts +5 -5
  4. package/dist/src/common/k8s-api/endpoints/metrics.api.d.ts +1 -1
  5. package/dist/src/common/utils/lazy-initialized.d.ts +17 -0
  6. package/dist/src/common/vars.d.ts +11 -0
  7. package/dist/src/extensions/common-api/registrations.d.ts +1 -1
  8. package/dist/src/extensions/extension-api.js +56 -146
  9. package/dist/src/extensions/lens-renderer-extension.d.ts +4 -2
  10. package/dist/src/extensions/registries/index.d.ts +0 -2
  11. package/dist/src/main/__test__/{router.test.d.ts → static-file-route.test.d.ts} +0 -0
  12. package/dist/src/main/helm/exec.d.ts +12 -0
  13. package/dist/src/main/helm/helm-release-manager.d.ts +1 -1
  14. package/dist/src/main/helm/helm-service.d.ts +1 -1
  15. package/dist/src/main/kube-auth-proxy/kube-auth-proxy.d.ts +2 -3
  16. package/dist/src/main/kubectl/kubectl.d.ts +0 -1
  17. package/dist/src/main/lens-proxy.d.ts +5 -5
  18. package/dist/src/main/native-theme.d.ts +6 -0
  19. package/dist/src/main/router/parse-request.injectable.d.ts +3 -0
  20. package/dist/src/main/router/router-content-types.d.ts +14 -0
  21. package/dist/src/main/{router.d.ts → router/router.d.ts} +28 -6
  22. package/dist/src/main/router/router.injectable.d.ts +2 -1
  23. package/dist/src/{renderer/initializers/workloads-overview-detail-registry.d.ts → main/router/router.test.d.ts} +1 -1
  24. package/dist/src/main/routes/helm/charts/get-chart-route.injectable.d.ts +4 -0
  25. package/dist/src/main/routes/helm/charts/get-chart-values-route.injectable.d.ts +4 -0
  26. package/dist/src/main/routes/helm/charts/list-charts-route.injectable.d.ts +4 -0
  27. package/dist/src/main/routes/helm/releases/delete-release-route.injectable.d.ts +4 -0
  28. package/dist/src/main/routes/helm/releases/get-release-history-route.injectable.d.ts +4 -0
  29. package/dist/src/main/routes/helm/releases/get-release-route.injectable.d.ts +4 -0
  30. package/dist/src/main/routes/helm/releases/get-release-values-route.injectable.d.ts +4 -0
  31. package/dist/src/main/routes/helm/releases/install-chart-route.injectable.d.ts +4 -0
  32. package/dist/src/main/routes/helm/releases/list-releases-route.injectable.d.ts +4 -0
  33. package/dist/src/main/routes/helm/releases/rollback-release-route.injectable.d.ts +4 -0
  34. package/dist/src/main/routes/helm/releases/update-release-route.injectable.d.ts +4 -0
  35. package/dist/src/main/routes/kubeconfig-route/get-service-account-route.injectable.d.ts +8 -0
  36. package/dist/src/main/routes/metrics/add-metrics-route.injectable.d.ts +8 -0
  37. package/dist/src/main/routes/metrics/get-metric-providers-route.injectable.d.ts +8 -0
  38. package/dist/src/main/routes/metrics/metrics-query.d.ts +7 -0
  39. package/dist/src/main/routes/port-forward/{create-port-forward.injectable.d.ts → functionality/create-port-forward.injectable.d.ts} +0 -0
  40. package/dist/src/main/routes/port-forward/{port-forward.d.ts → functionality/port-forward.d.ts} +0 -0
  41. package/dist/src/main/routes/port-forward/get-current-port-forward-route.injectable.d.ts +4 -0
  42. package/dist/src/main/routes/port-forward/start-port-forward-route.injectable.d.ts +4 -0
  43. package/dist/src/main/routes/port-forward/stop-current-port-forward-route.injectable.d.ts +4 -0
  44. package/dist/src/main/routes/resource-applier/apply-resource-route.injectable.d.ts +4 -0
  45. package/dist/src/main/routes/resource-applier/patch-resource-route.injectable.d.ts +4 -0
  46. package/dist/src/main/routes/static-file-route.injectable.d.ts +4 -0
  47. package/dist/src/main/routes/versions/get-version-route.injectable.d.ts +4 -0
  48. package/dist/src/renderer/components/+workloads-overview/detail-components.injectable.d.ts +4 -0
  49. package/dist/src/renderer/components/+workloads-overview/workloads-overview-detail-registration.d.ts +13 -0
  50. package/dist/src/renderer/components/item-object-list/content.d.ts +2 -0
  51. package/dist/src/renderer/components/kube-object-status-icon/kube-object-status-icon.d.ts +4 -5
  52. package/dist/src/renderer/components/kube-object-status-icon/kube-object-status-icon.test.d.ts +1 -0
  53. package/dist/src/renderer/components/kube-object-status-icon/kube-object-status-registration.d.ts +11 -0
  54. package/dist/src/renderer/components/kube-object-status-icon/status-registrations.injectable.d.ts +3 -0
  55. package/dist/src/renderer/components/kube-object-status-icon/statuses-for-kube-object.injectable.d.ts +4 -0
  56. package/dist/src/renderer/components/select/select.test.d.ts +1 -0
  57. package/dist/src/renderer/components/switch/switcher.d.ts +1 -1
  58. package/dist/src/renderer/initializers/index.d.ts +0 -1
  59. package/dist/src/renderer/theme.store.d.ts +5 -0
  60. package/package.json +1 -1
  61. package/dist/src/extensions/registries/kube-object-status-registry.d.ts +0 -15
  62. package/dist/src/extensions/registries/workloads-overview-detail-registry.d.ts +0 -19
  63. package/dist/src/main/helm/helm-cli.d.ts +0 -13
  64. package/dist/src/main/lens-binary.d.ts +0 -42
  65. package/dist/src/main/routes/helm-route.d.ts +0 -18
  66. package/dist/src/main/routes/index.d.ts +0 -10
  67. package/dist/src/main/routes/kubeconfig-route.d.ts +0 -8
  68. package/dist/src/main/routes/metrics-route.d.ts +0 -12
  69. package/dist/src/main/routes/port-forward/route-port-forward/route-port-forward.d.ts +0 -11
  70. package/dist/src/main/routes/port-forward/route-port-forward/route-port-forward.injectable.d.ts +0 -3
  71. package/dist/src/main/routes/port-forward-route.d.ts +0 -9
  72. package/dist/src/main/routes/resource-applier-route.d.ts +0 -9
  73. package/dist/src/main/routes/version-route.d.ts +0 -8
  74. package/dist/webpack.dev-server.d.ts +0 -14
  75. package/dist/webpack.renderer.d.ts +0 -25
@@ -12131,17 +12131,6 @@ eval("/**\n * @author Toru Nagashima <https://github.com/mysticatea>\n * @copyri
12131
12131
 
12132
12132
  /***/ }),
12133
12133
 
12134
- /***/ "./node_modules/eventemitter3/index.js":
12135
- /*!*********************************************!*\
12136
- !*** ./node_modules/eventemitter3/index.js ***!
12137
- \*********************************************/
12138
- /***/ ((module) => {
12139
-
12140
- "use strict";
12141
- eval("\n\nvar has = Object.prototype.hasOwnProperty\n , prefix = '~';\n\n/**\n * Constructor to create a storage for our `EE` objects.\n * An `Events` instance is a plain object whose properties are event names.\n *\n * @constructor\n * @private\n */\nfunction Events() {}\n\n//\n// We try to not inherit from `Object.prototype`. In some engines creating an\n// instance in this way is faster than calling `Object.create(null)` directly.\n// If `Object.create(null)` is not supported we prefix the event names with a\n// character to make sure that the built-in object properties are not\n// overridden or used as an attack vector.\n//\nif (Object.create) {\n Events.prototype = Object.create(null);\n\n //\n // This hack is needed because the `__proto__` property is still inherited in\n // some old browsers like Android 4, iPhone 5.1, Opera 11 and Safari 5.\n //\n if (!new Events().__proto__) prefix = false;\n}\n\n/**\n * Representation of a single event listener.\n *\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} [once=false] Specify if the listener is a one-time listener.\n * @constructor\n * @private\n */\nfunction EE(fn, context, once) {\n this.fn = fn;\n this.context = context;\n this.once = once || false;\n}\n\n/**\n * Add a listener for a given event.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} once Specify if the listener is a one-time listener.\n * @returns {EventEmitter}\n * @private\n */\nfunction addListener(emitter, event, fn, context, once) {\n if (typeof fn !== 'function') {\n throw new TypeError('The listener must be a function');\n }\n\n var listener = new EE(fn, context || emitter, once)\n , evt = prefix ? prefix + event : event;\n\n if (!emitter._events[evt]) emitter._events[evt] = listener, emitter._eventsCount++;\n else if (!emitter._events[evt].fn) emitter._events[evt].push(listener);\n else emitter._events[evt] = [emitter._events[evt], listener];\n\n return emitter;\n}\n\n/**\n * Clear event by name.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} evt The Event name.\n * @private\n */\nfunction clearEvent(emitter, evt) {\n if (--emitter._eventsCount === 0) emitter._events = new Events();\n else delete emitter._events[evt];\n}\n\n/**\n * Minimal `EventEmitter` interface that is molded against the Node.js\n * `EventEmitter` interface.\n *\n * @constructor\n * @public\n */\nfunction EventEmitter() {\n this._events = new Events();\n this._eventsCount = 0;\n}\n\n/**\n * Return an array listing the events for which the emitter has registered\n * listeners.\n *\n * @returns {Array}\n * @public\n */\nEventEmitter.prototype.eventNames = function eventNames() {\n var names = []\n , events\n , name;\n\n if (this._eventsCount === 0) return names;\n\n for (name in (events = this._events)) {\n if (has.call(events, name)) names.push(prefix ? name.slice(1) : name);\n }\n\n if (Object.getOwnPropertySymbols) {\n return names.concat(Object.getOwnPropertySymbols(events));\n }\n\n return names;\n};\n\n/**\n * Return the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Array} The registered listeners.\n * @public\n */\nEventEmitter.prototype.listeners = function listeners(event) {\n var evt = prefix ? prefix + event : event\n , handlers = this._events[evt];\n\n if (!handlers) return [];\n if (handlers.fn) return [handlers.fn];\n\n for (var i = 0, l = handlers.length, ee = new Array(l); i < l; i++) {\n ee[i] = handlers[i].fn;\n }\n\n return ee;\n};\n\n/**\n * Return the number of listeners listening to a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Number} The number of listeners.\n * @public\n */\nEventEmitter.prototype.listenerCount = function listenerCount(event) {\n var evt = prefix ? prefix + event : event\n , listeners = this._events[evt];\n\n if (!listeners) return 0;\n if (listeners.fn) return 1;\n return listeners.length;\n};\n\n/**\n * Calls each of the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Boolean} `true` if the event had listeners, else `false`.\n * @public\n */\nEventEmitter.prototype.emit = function emit(event, a1, a2, a3, a4, a5) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return false;\n\n var listeners = this._events[evt]\n , len = arguments.length\n , args\n , i;\n\n if (listeners.fn) {\n if (listeners.once) this.removeListener(event, listeners.fn, undefined, true);\n\n switch (len) {\n case 1: return listeners.fn.call(listeners.context), true;\n case 2: return listeners.fn.call(listeners.context, a1), true;\n case 3: return listeners.fn.call(listeners.context, a1, a2), true;\n case 4: return listeners.fn.call(listeners.context, a1, a2, a3), true;\n case 5: return listeners.fn.call(listeners.context, a1, a2, a3, a4), true;\n case 6: return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true;\n }\n\n for (i = 1, args = new Array(len -1); i < len; i++) {\n args[i - 1] = arguments[i];\n }\n\n listeners.fn.apply(listeners.context, args);\n } else {\n var length = listeners.length\n , j;\n\n for (i = 0; i < length; i++) {\n if (listeners[i].once) this.removeListener(event, listeners[i].fn, undefined, true);\n\n switch (len) {\n case 1: listeners[i].fn.call(listeners[i].context); break;\n case 2: listeners[i].fn.call(listeners[i].context, a1); break;\n case 3: listeners[i].fn.call(listeners[i].context, a1, a2); break;\n case 4: listeners[i].fn.call(listeners[i].context, a1, a2, a3); break;\n default:\n if (!args) for (j = 1, args = new Array(len -1); j < len; j++) {\n args[j - 1] = arguments[j];\n }\n\n listeners[i].fn.apply(listeners[i].context, args);\n }\n }\n }\n\n return true;\n};\n\n/**\n * Add a listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.on = function on(event, fn, context) {\n return addListener(this, event, fn, context, false);\n};\n\n/**\n * Add a one-time listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.once = function once(event, fn, context) {\n return addListener(this, event, fn, context, true);\n};\n\n/**\n * Remove the listeners of a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn Only remove the listeners that match this function.\n * @param {*} context Only remove the listeners that have this context.\n * @param {Boolean} once Only remove one-time listeners.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeListener = function removeListener(event, fn, context, once) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return this;\n if (!fn) {\n clearEvent(this, evt);\n return this;\n }\n\n var listeners = this._events[evt];\n\n if (listeners.fn) {\n if (\n listeners.fn === fn &&\n (!once || listeners.once) &&\n (!context || listeners.context === context)\n ) {\n clearEvent(this, evt);\n }\n } else {\n for (var i = 0, events = [], length = listeners.length; i < length; i++) {\n if (\n listeners[i].fn !== fn ||\n (once && !listeners[i].once) ||\n (context && listeners[i].context !== context)\n ) {\n events.push(listeners[i]);\n }\n }\n\n //\n // Reset the array, or remove it completely if we have no more listeners.\n //\n if (events.length) this._events[evt] = events.length === 1 ? events[0] : events;\n else clearEvent(this, evt);\n }\n\n return this;\n};\n\n/**\n * Remove all listeners, or those of the specified event.\n *\n * @param {(String|Symbol)} [event] The event name.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeAllListeners = function removeAllListeners(event) {\n var evt;\n\n if (event) {\n evt = prefix ? prefix + event : event;\n if (this._events[evt]) clearEvent(this, evt);\n } else {\n this._events = new Events();\n this._eventsCount = 0;\n }\n\n return this;\n};\n\n//\n// Alias methods names because people roll like that.\n//\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\nEventEmitter.prototype.addListener = EventEmitter.prototype.on;\n\n//\n// Expose the prefix.\n//\nEventEmitter.prefixed = prefix;\n\n//\n// Allow `EventEmitter` to be imported as module namespace.\n//\nEventEmitter.EventEmitter = EventEmitter;\n\n//\n// Expose the module.\n//\nif (true) {\n module.exports = EventEmitter;\n}\n\n\n//# sourceURL=webpack://open-lens/./node_modules/eventemitter3/index.js?");
12142
-
12143
- /***/ }),
12144
-
12145
12134
  /***/ "./node_modules/extend/index.js":
12146
12135
  /*!**************************************!*\
12147
12136
  !*** ./node_modules/extend/index.js ***!
@@ -12580,26 +12569,6 @@ eval("\n\nvar toString = Object.prototype.toString;\n\n/**\n * Extract names fro
12580
12569
 
12581
12570
  /***/ }),
12582
12571
 
12583
- /***/ "./node_modules/follow-redirects/debug.js":
12584
- /*!************************************************!*\
12585
- !*** ./node_modules/follow-redirects/debug.js ***!
12586
- \************************************************/
12587
- /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
12588
-
12589
- eval("var debug;\n\nmodule.exports = function () {\n if (!debug) {\n try {\n /* eslint global-require: off */\n debug = __webpack_require__(/*! debug */ \"./node_modules/debug/src/browser.js\")(\"follow-redirects\");\n }\n catch (error) { /* */ }\n if (typeof debug !== \"function\") {\n debug = function () { /* */ };\n }\n }\n debug.apply(null, arguments);\n};\n\n\n//# sourceURL=webpack://open-lens/./node_modules/follow-redirects/debug.js?");
12590
-
12591
- /***/ }),
12592
-
12593
- /***/ "./node_modules/follow-redirects/index.js":
12594
- /*!************************************************!*\
12595
- !*** ./node_modules/follow-redirects/index.js ***!
12596
- \************************************************/
12597
- /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
12598
-
12599
- eval("var url = __webpack_require__(/*! url */ \"url\");\nvar URL = url.URL;\nvar http = __webpack_require__(/*! http */ \"http\");\nvar https = __webpack_require__(/*! https */ \"https\");\nvar Writable = (__webpack_require__(/*! stream */ \"stream\").Writable);\nvar assert = __webpack_require__(/*! assert */ \"assert\");\nvar debug = __webpack_require__(/*! ./debug */ \"./node_modules/follow-redirects/debug.js\");\n\n// Create handlers that pass events from native requests\nvar events = [\"abort\", \"aborted\", \"connect\", \"error\", \"socket\", \"timeout\"];\nvar eventHandlers = Object.create(null);\nevents.forEach(function (event) {\n eventHandlers[event] = function (arg1, arg2, arg3) {\n this._redirectable.emit(event, arg1, arg2, arg3);\n };\n});\n\n// Error types with codes\nvar RedirectionError = createErrorType(\n \"ERR_FR_REDIRECTION_FAILURE\",\n \"Redirected request failed\"\n);\nvar TooManyRedirectsError = createErrorType(\n \"ERR_FR_TOO_MANY_REDIRECTS\",\n \"Maximum number of redirects exceeded\"\n);\nvar MaxBodyLengthExceededError = createErrorType(\n \"ERR_FR_MAX_BODY_LENGTH_EXCEEDED\",\n \"Request body larger than maxBodyLength limit\"\n);\nvar WriteAfterEndError = createErrorType(\n \"ERR_STREAM_WRITE_AFTER_END\",\n \"write after end\"\n);\n\n// An HTTP(S) request that can be redirected\nfunction RedirectableRequest(options, responseCallback) {\n // Initialize the request\n Writable.call(this);\n this._sanitizeOptions(options);\n this._options = options;\n this._ended = false;\n this._ending = false;\n this._redirectCount = 0;\n this._redirects = [];\n this._requestBodyLength = 0;\n this._requestBodyBuffers = [];\n\n // Attach a callback if passed\n if (responseCallback) {\n this.on(\"response\", responseCallback);\n }\n\n // React to responses of native requests\n var self = this;\n this._onNativeResponse = function (response) {\n self._processResponse(response);\n };\n\n // Perform the first request\n this._performRequest();\n}\nRedirectableRequest.prototype = Object.create(Writable.prototype);\n\nRedirectableRequest.prototype.abort = function () {\n abortRequest(this._currentRequest);\n this.emit(\"abort\");\n};\n\n// Writes buffered data to the current native request\nRedirectableRequest.prototype.write = function (data, encoding, callback) {\n // Writing is not allowed if end has been called\n if (this._ending) {\n throw new WriteAfterEndError();\n }\n\n // Validate input and shift parameters if necessary\n if (!(typeof data === \"string\" || typeof data === \"object\" && (\"length\" in data))) {\n throw new TypeError(\"data should be a string, Buffer or Uint8Array\");\n }\n if (typeof encoding === \"function\") {\n callback = encoding;\n encoding = null;\n }\n\n // Ignore empty buffers, since writing them doesn't invoke the callback\n // https://github.com/nodejs/node/issues/22066\n if (data.length === 0) {\n if (callback) {\n callback();\n }\n return;\n }\n // Only write when we don't exceed the maximum body length\n if (this._requestBodyLength + data.length <= this._options.maxBodyLength) {\n this._requestBodyLength += data.length;\n this._requestBodyBuffers.push({ data: data, encoding: encoding });\n this._currentRequest.write(data, encoding, callback);\n }\n // Error when we exceed the maximum body length\n else {\n this.emit(\"error\", new MaxBodyLengthExceededError());\n this.abort();\n }\n};\n\n// Ends the current native request\nRedirectableRequest.prototype.end = function (data, encoding, callback) {\n // Shift parameters if necessary\n if (typeof data === \"function\") {\n callback = data;\n data = encoding = null;\n }\n else if (typeof encoding === \"function\") {\n callback = encoding;\n encoding = null;\n }\n\n // Write data if needed and end\n if (!data) {\n this._ended = this._ending = true;\n this._currentRequest.end(null, null, callback);\n }\n else {\n var self = this;\n var currentRequest = this._currentRequest;\n this.write(data, encoding, function () {\n self._ended = true;\n currentRequest.end(null, null, callback);\n });\n this._ending = true;\n }\n};\n\n// Sets a header value on the current native request\nRedirectableRequest.prototype.setHeader = function (name, value) {\n this._options.headers[name] = value;\n this._currentRequest.setHeader(name, value);\n};\n\n// Clears a header value on the current native request\nRedirectableRequest.prototype.removeHeader = function (name) {\n delete this._options.headers[name];\n this._currentRequest.removeHeader(name);\n};\n\n// Global timeout for all underlying requests\nRedirectableRequest.prototype.setTimeout = function (msecs, callback) {\n var self = this;\n\n // Destroys the socket on timeout\n function destroyOnTimeout(socket) {\n socket.setTimeout(msecs);\n socket.removeListener(\"timeout\", socket.destroy);\n socket.addListener(\"timeout\", socket.destroy);\n }\n\n // Sets up a timer to trigger a timeout event\n function startTimer(socket) {\n if (self._timeout) {\n clearTimeout(self._timeout);\n }\n self._timeout = setTimeout(function () {\n self.emit(\"timeout\");\n clearTimer();\n }, msecs);\n destroyOnTimeout(socket);\n }\n\n // Stops a timeout from triggering\n function clearTimer() {\n // Clear the timeout\n if (self._timeout) {\n clearTimeout(self._timeout);\n self._timeout = null;\n }\n\n // Clean up all attached listeners\n self.removeListener(\"abort\", clearTimer);\n self.removeListener(\"error\", clearTimer);\n self.removeListener(\"response\", clearTimer);\n if (callback) {\n self.removeListener(\"timeout\", callback);\n }\n if (!self.socket) {\n self._currentRequest.removeListener(\"socket\", startTimer);\n }\n }\n\n // Attach callback if passed\n if (callback) {\n this.on(\"timeout\", callback);\n }\n\n // Start the timer if or when the socket is opened\n if (this.socket) {\n startTimer(this.socket);\n }\n else {\n this._currentRequest.once(\"socket\", startTimer);\n }\n\n // Clean up on events\n this.on(\"socket\", destroyOnTimeout);\n this.on(\"abort\", clearTimer);\n this.on(\"error\", clearTimer);\n this.on(\"response\", clearTimer);\n\n return this;\n};\n\n// Proxy all other public ClientRequest methods\n[\n \"flushHeaders\", \"getHeader\",\n \"setNoDelay\", \"setSocketKeepAlive\",\n].forEach(function (method) {\n RedirectableRequest.prototype[method] = function (a, b) {\n return this._currentRequest[method](a, b);\n };\n});\n\n// Proxy all public ClientRequest properties\n[\"aborted\", \"connection\", \"socket\"].forEach(function (property) {\n Object.defineProperty(RedirectableRequest.prototype, property, {\n get: function () { return this._currentRequest[property]; },\n });\n});\n\nRedirectableRequest.prototype._sanitizeOptions = function (options) {\n // Ensure headers are always present\n if (!options.headers) {\n options.headers = {};\n }\n\n // Since http.request treats host as an alias of hostname,\n // but the url module interprets host as hostname plus port,\n // eliminate the host property to avoid confusion.\n if (options.host) {\n // Use hostname if set, because it has precedence\n if (!options.hostname) {\n options.hostname = options.host;\n }\n delete options.host;\n }\n\n // Complete the URL object when necessary\n if (!options.pathname && options.path) {\n var searchPos = options.path.indexOf(\"?\");\n if (searchPos < 0) {\n options.pathname = options.path;\n }\n else {\n options.pathname = options.path.substring(0, searchPos);\n options.search = options.path.substring(searchPos);\n }\n }\n};\n\n\n// Executes the next native request (initial or redirect)\nRedirectableRequest.prototype._performRequest = function () {\n // Load the native protocol\n var protocol = this._options.protocol;\n var nativeProtocol = this._options.nativeProtocols[protocol];\n if (!nativeProtocol) {\n this.emit(\"error\", new TypeError(\"Unsupported protocol \" + protocol));\n return;\n }\n\n // If specified, use the agent corresponding to the protocol\n // (HTTP and HTTPS use different types of agents)\n if (this._options.agents) {\n var scheme = protocol.substr(0, protocol.length - 1);\n this._options.agent = this._options.agents[scheme];\n }\n\n // Create the native request\n var request = this._currentRequest =\n nativeProtocol.request(this._options, this._onNativeResponse);\n this._currentUrl = url.format(this._options);\n\n // Set up event handlers\n request._redirectable = this;\n for (var e = 0; e < events.length; e++) {\n request.on(events[e], eventHandlers[events[e]]);\n }\n\n // End a redirected request\n // (The first request must be ended explicitly with RedirectableRequest#end)\n if (this._isRedirect) {\n // Write the request entity and end.\n var i = 0;\n var self = this;\n var buffers = this._requestBodyBuffers;\n (function writeNext(error) {\n // Only write if this request has not been redirected yet\n /* istanbul ignore else */\n if (request === self._currentRequest) {\n // Report any write errors\n /* istanbul ignore if */\n if (error) {\n self.emit(\"error\", error);\n }\n // Write the next buffer if there are still left\n else if (i < buffers.length) {\n var buffer = buffers[i++];\n /* istanbul ignore else */\n if (!request.finished) {\n request.write(buffer.data, buffer.encoding, writeNext);\n }\n }\n // End the request if `end` has been called on us\n else if (self._ended) {\n request.end();\n }\n }\n }());\n }\n};\n\n// Processes a response from the current native request\nRedirectableRequest.prototype._processResponse = function (response) {\n // Store the redirected response\n var statusCode = response.statusCode;\n if (this._options.trackRedirects) {\n this._redirects.push({\n url: this._currentUrl,\n headers: response.headers,\n statusCode: statusCode,\n });\n }\n\n // RFC7231§6.4: The 3xx (Redirection) class of status code indicates\n // that further action needs to be taken by the user agent in order to\n // fulfill the request. If a Location header field is provided,\n // the user agent MAY automatically redirect its request to the URI\n // referenced by the Location field value,\n // even if the specific status code is not understood.\n var location = response.headers.location;\n if (location && this._options.followRedirects !== false &&\n statusCode >= 300 && statusCode < 400) {\n // Abort the current request\n abortRequest(this._currentRequest);\n // Discard the remainder of the response to avoid waiting for data\n response.destroy();\n\n // RFC7231§6.4: A client SHOULD detect and intervene\n // in cyclical redirections (i.e., \"infinite\" redirection loops).\n if (++this._redirectCount > this._options.maxRedirects) {\n this.emit(\"error\", new TooManyRedirectsError());\n return;\n }\n\n // RFC7231§6.4: Automatic redirection needs to done with\n // care for methods not known to be safe, […]\n // RFC7231§6.4.2–3: For historical reasons, a user agent MAY change\n // the request method from POST to GET for the subsequent request.\n if ((statusCode === 301 || statusCode === 302) && this._options.method === \"POST\" ||\n // RFC7231§6.4.4: The 303 (See Other) status code indicates that\n // the server is redirecting the user agent to a different resource […]\n // A user agent can perform a retrieval request targeting that URI\n // (a GET or HEAD request if using HTTP) […]\n (statusCode === 303) && !/^(?:GET|HEAD)$/.test(this._options.method)) {\n this._options.method = \"GET\";\n // Drop a possible entity and headers related to it\n this._requestBodyBuffers = [];\n removeMatchingHeaders(/^content-/i, this._options.headers);\n }\n\n // Drop the Host header, as the redirect might lead to a different host\n var currentHostHeader = removeMatchingHeaders(/^host$/i, this._options.headers);\n\n // If the redirect is relative, carry over the host of the last request\n var currentUrlParts = url.parse(this._currentUrl);\n var currentHost = currentHostHeader || currentUrlParts.host;\n var currentUrl = /^\\w+:/.test(location) ? this._currentUrl :\n url.format(Object.assign(currentUrlParts, { host: currentHost }));\n\n // Determine the URL of the redirection\n var redirectUrl;\n try {\n redirectUrl = url.resolve(currentUrl, location);\n }\n catch (cause) {\n this.emit(\"error\", new RedirectionError(cause));\n return;\n }\n\n // Create the redirected request\n debug(\"redirecting to\", redirectUrl);\n this._isRedirect = true;\n var redirectUrlParts = url.parse(redirectUrl);\n Object.assign(this._options, redirectUrlParts);\n\n // Drop the confidential headers when redirecting to another domain\n if (!(redirectUrlParts.host === currentHost || isSubdomainOf(redirectUrlParts.host, currentHost))) {\n removeMatchingHeaders(/^(?:authorization|cookie)$/i, this._options.headers);\n }\n\n // Evaluate the beforeRedirect callback\n if (typeof this._options.beforeRedirect === \"function\") {\n var responseDetails = { headers: response.headers };\n try {\n this._options.beforeRedirect.call(null, this._options, responseDetails);\n }\n catch (err) {\n this.emit(\"error\", err);\n return;\n }\n this._sanitizeOptions(this._options);\n }\n\n // Perform the redirected request\n try {\n this._performRequest();\n }\n catch (cause) {\n this.emit(\"error\", new RedirectionError(cause));\n }\n }\n else {\n // The response is not a redirect; return it as-is\n response.responseUrl = this._currentUrl;\n response.redirects = this._redirects;\n this.emit(\"response\", response);\n\n // Clean up\n this._requestBodyBuffers = [];\n }\n};\n\n// Wraps the key/value object of protocols with redirect functionality\nfunction wrap(protocols) {\n // Default settings\n var exports = {\n maxRedirects: 21,\n maxBodyLength: 10 * 1024 * 1024,\n };\n\n // Wrap each protocol\n var nativeProtocols = {};\n Object.keys(protocols).forEach(function (scheme) {\n var protocol = scheme + \":\";\n var nativeProtocol = nativeProtocols[protocol] = protocols[scheme];\n var wrappedProtocol = exports[scheme] = Object.create(nativeProtocol);\n\n // Executes a request, following redirects\n function request(input, options, callback) {\n // Parse parameters\n if (typeof input === \"string\") {\n var urlStr = input;\n try {\n input = urlToOptions(new URL(urlStr));\n }\n catch (err) {\n /* istanbul ignore next */\n input = url.parse(urlStr);\n }\n }\n else if (URL && (input instanceof URL)) {\n input = urlToOptions(input);\n }\n else {\n callback = options;\n options = input;\n input = { protocol: protocol };\n }\n if (typeof options === \"function\") {\n callback = options;\n options = null;\n }\n\n // Set defaults\n options = Object.assign({\n maxRedirects: exports.maxRedirects,\n maxBodyLength: exports.maxBodyLength,\n }, input, options);\n options.nativeProtocols = nativeProtocols;\n\n assert.equal(options.protocol, protocol, \"protocol mismatch\");\n debug(\"options\", options);\n return new RedirectableRequest(options, callback);\n }\n\n // Executes a GET request, following redirects\n function get(input, options, callback) {\n var wrappedRequest = wrappedProtocol.request(input, options, callback);\n wrappedRequest.end();\n return wrappedRequest;\n }\n\n // Expose the properties on the wrapped protocol\n Object.defineProperties(wrappedProtocol, {\n request: { value: request, configurable: true, enumerable: true, writable: true },\n get: { value: get, configurable: true, enumerable: true, writable: true },\n });\n });\n return exports;\n}\n\n/* istanbul ignore next */\nfunction noop() { /* empty */ }\n\n// from https://github.com/nodejs/node/blob/master/lib/internal/url.js\nfunction urlToOptions(urlObject) {\n var options = {\n protocol: urlObject.protocol,\n hostname: urlObject.hostname.startsWith(\"[\") ?\n /* istanbul ignore next */\n urlObject.hostname.slice(1, -1) :\n urlObject.hostname,\n hash: urlObject.hash,\n search: urlObject.search,\n pathname: urlObject.pathname,\n path: urlObject.pathname + urlObject.search,\n href: urlObject.href,\n };\n if (urlObject.port !== \"\") {\n options.port = Number(urlObject.port);\n }\n return options;\n}\n\nfunction removeMatchingHeaders(regex, headers) {\n var lastValue;\n for (var header in headers) {\n if (regex.test(header)) {\n lastValue = headers[header];\n delete headers[header];\n }\n }\n return (lastValue === null || typeof lastValue === \"undefined\") ?\n undefined : String(lastValue).trim();\n}\n\nfunction createErrorType(code, defaultMessage) {\n function CustomError(cause) {\n Error.captureStackTrace(this, this.constructor);\n if (!cause) {\n this.message = defaultMessage;\n }\n else {\n this.message = defaultMessage + \": \" + cause.message;\n this.cause = cause;\n }\n }\n CustomError.prototype = new Error();\n CustomError.prototype.constructor = CustomError;\n CustomError.prototype.name = \"Error [\" + code + \"]\";\n CustomError.prototype.code = code;\n return CustomError;\n}\n\nfunction abortRequest(request) {\n for (var e = 0; e < events.length; e++) {\n request.removeListener(events[e], eventHandlers[events[e]]);\n }\n request.on(\"error\", noop);\n request.abort();\n}\n\nfunction isSubdomainOf(subdomain, domain) {\n const dot = subdomain.length - domain.length - 1;\n return dot > 0 && subdomain[dot] === \".\" && subdomain.endsWith(domain);\n}\n\n// Exports\nmodule.exports = wrap({ http: http, https: https });\nmodule.exports.wrap = wrap;\n\n\n//# sourceURL=webpack://open-lens/./node_modules/follow-redirects/index.js?");
12600
-
12601
- /***/ }),
12602
-
12603
12572
  /***/ "./node_modules/forever-agent/index.js":
12604
12573
  /*!*********************************************!*\
12605
12574
  !*** ./node_modules/forever-agent/index.js ***!
@@ -14055,76 +14024,6 @@ eval("var assert = __webpack_require__(/*! assert */ \"assert\");\nvar util = __
14055
14024
 
14056
14025
  /***/ }),
14057
14026
 
14058
- /***/ "./node_modules/http-proxy/index.js":
14059
- /*!******************************************!*\
14060
- !*** ./node_modules/http-proxy/index.js ***!
14061
- \******************************************/
14062
- /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
14063
-
14064
- eval("/*!\n * Caron dimonio, con occhi di bragia\n * loro accennando, tutte le raccoglie;\n * batte col remo qualunque s’adagia \n *\n * Charon the demon, with the eyes of glede,\n * Beckoning to them, collects them all together,\n * Beats with his oar whoever lags behind\n * \n * Dante - The Divine Comedy (Canto III)\n */\n\nmodule.exports = __webpack_require__(/*! ./lib/http-proxy */ \"./node_modules/http-proxy/lib/http-proxy.js\");\n\n//# sourceURL=webpack://open-lens/./node_modules/http-proxy/index.js?");
14065
-
14066
- /***/ }),
14067
-
14068
- /***/ "./node_modules/http-proxy/lib/http-proxy.js":
14069
- /*!***************************************************!*\
14070
- !*** ./node_modules/http-proxy/lib/http-proxy.js ***!
14071
- \***************************************************/
14072
- /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
14073
-
14074
- eval(" // Use explicit /index.js to help browserify negociation in require '/lib/http-proxy' (!)\nvar ProxyServer = (__webpack_require__(/*! ./http-proxy/index.js */ \"./node_modules/http-proxy/lib/http-proxy/index.js\").Server);\n\n\n/**\n * Creates the proxy server.\n *\n * Examples:\n *\n * httpProxy.createProxyServer({ .. }, 8000)\n * // => '{ web: [Function], ws: [Function] ... }'\n *\n * @param {Object} Options Config object passed to the proxy\n *\n * @return {Object} Proxy Proxy object with handlers for `ws` and `web` requests\n *\n * @api public\n */\n\n\nfunction createProxyServer(options) {\n /*\n * `options` is needed and it must have the following layout:\n *\n * {\n * target : <url string to be parsed with the url module>\n * forward: <url string to be parsed with the url module>\n * agent : <object to be passed to http(s).request>\n * ssl : <object to be passed to https.createServer()>\n * ws : <true/false, if you want to proxy websockets>\n * xfwd : <true/false, adds x-forward headers>\n * secure : <true/false, verify SSL certificate>\n * toProxy: <true/false, explicitly specify if we are proxying to another proxy>\n * prependPath: <true/false, Default: true - specify whether you want to prepend the target's path to the proxy path>\n * ignorePath: <true/false, Default: false - specify whether you want to ignore the proxy path of the incoming request>\n * localAddress : <Local interface string to bind for outgoing connections>\n * changeOrigin: <true/false, Default: false - changes the origin of the host header to the target URL>\n * preserveHeaderKeyCase: <true/false, Default: false - specify whether you want to keep letter case of response header key >\n * auth : Basic authentication i.e. 'user:password' to compute an Authorization header.\n * hostRewrite: rewrites the location hostname on (201/301/302/307/308) redirects, Default: null.\n * autoRewrite: rewrites the location host/port on (201/301/302/307/308) redirects based on requested host/port. Default: false.\n * protocolRewrite: rewrites the location protocol on (201/301/302/307/308) redirects to 'http' or 'https'. Default: null.\n * }\n *\n * NOTE: `options.ws` and `options.ssl` are optional.\n * `options.target and `options.forward` cannot be\n * both missing\n * }\n */\n\n return new ProxyServer(options);\n}\n\n\nProxyServer.createProxyServer = createProxyServer;\nProxyServer.createServer = createProxyServer;\nProxyServer.createProxy = createProxyServer;\n\n\n\n\n/**\n * Export the proxy \"Server\" as the main export.\n */\nmodule.exports = ProxyServer;\n\n\n\n//# sourceURL=webpack://open-lens/./node_modules/http-proxy/lib/http-proxy.js?");
14075
-
14076
- /***/ }),
14077
-
14078
- /***/ "./node_modules/http-proxy/lib/http-proxy/common.js":
14079
- /*!**********************************************************!*\
14080
- !*** ./node_modules/http-proxy/lib/http-proxy/common.js ***!
14081
- \**********************************************************/
14082
- /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
14083
-
14084
- eval("var common = exports,\n url = __webpack_require__(/*! url */ \"url\"),\n extend = (__webpack_require__(/*! util */ \"util\")._extend),\n required = __webpack_require__(/*! requires-port */ \"./node_modules/requires-port/index.js\");\n\nvar upgradeHeader = /(^|,)\\s*upgrade\\s*($|,)/i,\n isSSL = /^https|wss/;\n\n/**\n * Simple Regex for testing if protocol is https\n */\ncommon.isSSL = isSSL;\n/**\n * Copies the right headers from `options` and `req` to\n * `outgoing` which is then used to fire the proxied\n * request.\n *\n * Examples:\n *\n * common.setupOutgoing(outgoing, options, req)\n * // => { host: ..., hostname: ...}\n *\n * @param {Object} Outgoing Base object to be filled with required properties\n * @param {Object} Options Config object passed to the proxy\n * @param {ClientRequest} Req Request Object\n * @param {String} Forward String to select forward or target\n * \n * @return {Object} Outgoing Object with all required properties set\n *\n * @api private\n */\n\ncommon.setupOutgoing = function(outgoing, options, req, forward) {\n outgoing.port = options[forward || 'target'].port ||\n (isSSL.test(options[forward || 'target'].protocol) ? 443 : 80);\n\n ['host', 'hostname', 'socketPath', 'pfx', 'key',\n 'passphrase', 'cert', 'ca', 'ciphers', 'secureProtocol'].forEach(\n function(e) { outgoing[e] = options[forward || 'target'][e]; }\n );\n\n outgoing.method = options.method || req.method;\n outgoing.headers = extend({}, req.headers);\n\n if (options.headers){\n extend(outgoing.headers, options.headers);\n }\n\n if (options.auth) {\n outgoing.auth = options.auth;\n }\n \n if (options.ca) {\n outgoing.ca = options.ca;\n }\n\n if (isSSL.test(options[forward || 'target'].protocol)) {\n outgoing.rejectUnauthorized = (typeof options.secure === \"undefined\") ? true : options.secure;\n }\n\n\n outgoing.agent = options.agent || false;\n outgoing.localAddress = options.localAddress;\n\n //\n // Remark: If we are false and not upgrading, set the connection: close. This is the right thing to do\n // as node core doesn't handle this COMPLETELY properly yet.\n //\n if (!outgoing.agent) {\n outgoing.headers = outgoing.headers || {};\n if (typeof outgoing.headers.connection !== 'string'\n || !upgradeHeader.test(outgoing.headers.connection)\n ) { outgoing.headers.connection = 'close'; }\n }\n\n\n // the final path is target path + relative path requested by user:\n var target = options[forward || 'target'];\n var targetPath = target && options.prependPath !== false\n ? (target.path || '')\n : '';\n\n //\n // Remark: Can we somehow not use url.parse as a perf optimization?\n //\n var outgoingPath = !options.toProxy\n ? (url.parse(req.url).path || '')\n : req.url;\n\n //\n // Remark: ignorePath will just straight up ignore whatever the request's\n // path is. This can be labeled as FOOT-GUN material if you do not know what\n // you are doing and are using conflicting options.\n //\n outgoingPath = !options.ignorePath ? outgoingPath : '';\n\n outgoing.path = common.urlJoin(targetPath, outgoingPath);\n\n if (options.changeOrigin) {\n outgoing.headers.host =\n required(outgoing.port, options[forward || 'target'].protocol) && !hasPort(outgoing.host)\n ? outgoing.host + ':' + outgoing.port\n : outgoing.host;\n }\n return outgoing;\n};\n\n/**\n * Set the proper configuration for sockets,\n * set no delay and set keep alive, also set\n * the timeout to 0.\n *\n * Examples:\n *\n * common.setupSocket(socket)\n * // => Socket\n *\n * @param {Socket} Socket instance to setup\n * \n * @return {Socket} Return the configured socket.\n *\n * @api private\n */\n\ncommon.setupSocket = function(socket) {\n socket.setTimeout(0);\n socket.setNoDelay(true);\n\n socket.setKeepAlive(true, 0);\n\n return socket;\n};\n\n/**\n * Get the port number from the host. Or guess it based on the connection type.\n *\n * @param {Request} req Incoming HTTP request.\n *\n * @return {String} The port number.\n *\n * @api private\n */\ncommon.getPort = function(req) {\n var res = req.headers.host ? req.headers.host.match(/:(\\d+)/) : '';\n\n return res ?\n res[1] :\n common.hasEncryptedConnection(req) ? '443' : '80';\n};\n\n/**\n * Check if the request has an encrypted connection.\n *\n * @param {Request} req Incoming HTTP request.\n *\n * @return {Boolean} Whether the connection is encrypted or not.\n *\n * @api private\n */\ncommon.hasEncryptedConnection = function(req) {\n return Boolean(req.connection.encrypted || req.connection.pair);\n};\n\n/**\n * OS-agnostic join (doesn't break on URLs like path.join does on Windows)>\n *\n * @return {String} The generated path.\n *\n * @api private\n */\n\ncommon.urlJoin = function() {\n //\n // We do not want to mess with the query string. All we want to touch is the path.\n //\n var args = Array.prototype.slice.call(arguments),\n lastIndex = args.length - 1,\n last = args[lastIndex],\n lastSegs = last.split('?'),\n retSegs;\n\n args[lastIndex] = lastSegs.shift();\n\n //\n // Join all strings, but remove empty strings so we don't get extra slashes from\n // joining e.g. ['', 'am']\n //\n retSegs = [\n args.filter(Boolean).join('/')\n .replace(/\\/+/g, '/')\n .replace('http:/', 'http://')\n .replace('https:/', 'https://')\n ];\n\n // Only join the query string if it exists so we don't have trailing a '?'\n // on every request\n\n // Handle case where there could be multiple ? in the URL.\n retSegs.push.apply(retSegs, lastSegs);\n\n return retSegs.join('?')\n};\n\n/**\n * Rewrites or removes the domain of a cookie header\n *\n * @param {String|Array} Header\n * @param {Object} Config, mapping of domain to rewritten domain.\n * '*' key to match any domain, null value to remove the domain.\n *\n * @api private\n */\ncommon.rewriteCookieProperty = function rewriteCookieProperty(header, config, property) {\n if (Array.isArray(header)) {\n return header.map(function (headerElement) {\n return rewriteCookieProperty(headerElement, config, property);\n });\n }\n return header.replace(new RegExp(\"(;\\\\s*\" + property + \"=)([^;]+)\", 'i'), function(match, prefix, previousValue) {\n var newValue;\n if (previousValue in config) {\n newValue = config[previousValue];\n } else if ('*' in config) {\n newValue = config['*'];\n } else {\n //no match, return previous value\n return match;\n }\n if (newValue) {\n //replace value\n return prefix + newValue;\n } else {\n //remove value\n return '';\n }\n });\n};\n\n/**\n * Check the host and see if it potentially has a port in it (keep it simple)\n *\n * @returns {Boolean} Whether we have one or not\n *\n * @api private\n */\nfunction hasPort(host) {\n return !!~host.indexOf(':');\n};\n\n\n//# sourceURL=webpack://open-lens/./node_modules/http-proxy/lib/http-proxy/common.js?");
14085
-
14086
- /***/ }),
14087
-
14088
- /***/ "./node_modules/http-proxy/lib/http-proxy/index.js":
14089
- /*!*********************************************************!*\
14090
- !*** ./node_modules/http-proxy/lib/http-proxy/index.js ***!
14091
- \*********************************************************/
14092
- /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
14093
-
14094
- eval("var httpProxy = module.exports,\n extend = (__webpack_require__(/*! util */ \"util\")._extend),\n parse_url = (__webpack_require__(/*! url */ \"url\").parse),\n EE3 = __webpack_require__(/*! eventemitter3 */ \"./node_modules/eventemitter3/index.js\"),\n http = __webpack_require__(/*! http */ \"http\"),\n https = __webpack_require__(/*! https */ \"https\"),\n web = __webpack_require__(/*! ./passes/web-incoming */ \"./node_modules/http-proxy/lib/http-proxy/passes/web-incoming.js\"),\n ws = __webpack_require__(/*! ./passes/ws-incoming */ \"./node_modules/http-proxy/lib/http-proxy/passes/ws-incoming.js\");\n\nhttpProxy.Server = ProxyServer;\n\n/**\n * Returns a function that creates the loader for\n * either `ws` or `web`'s passes.\n *\n * Examples:\n *\n * httpProxy.createRightProxy('ws')\n * // => [Function]\n *\n * @param {String} Type Either 'ws' or 'web'\n * \n * @return {Function} Loader Function that when called returns an iterator for the right passes\n *\n * @api private\n */\n\nfunction createRightProxy(type) {\n\n return function(options) {\n return function(req, res /*, [head], [opts] */) {\n var passes = (type === 'ws') ? this.wsPasses : this.webPasses,\n args = [].slice.call(arguments),\n cntr = args.length - 1,\n head, cbl;\n\n /* optional args parse begin */\n if(typeof args[cntr] === 'function') {\n cbl = args[cntr];\n\n cntr--;\n }\n\n var requestOptions = options;\n if(\n !(args[cntr] instanceof Buffer) &&\n args[cntr] !== res\n ) {\n //Copy global options\n requestOptions = extend({}, options);\n //Overwrite with request options\n extend(requestOptions, args[cntr]);\n\n cntr--;\n }\n\n if(args[cntr] instanceof Buffer) {\n head = args[cntr];\n }\n\n /* optional args parse end */\n\n ['target', 'forward'].forEach(function(e) {\n if (typeof requestOptions[e] === 'string')\n requestOptions[e] = parse_url(requestOptions[e]);\n });\n\n if (!requestOptions.target && !requestOptions.forward) {\n return this.emit('error', new Error('Must provide a proper URL as target'));\n }\n\n for(var i=0; i < passes.length; i++) {\n /**\n * Call of passes functions\n * pass(req, res, options, head)\n *\n * In WebSockets case the `res` variable\n * refer to the connection socket\n * pass(req, socket, options, head)\n */\n if(passes[i](req, res, requestOptions, head, this, cbl)) { // passes can return a truthy value to halt the loop\n break;\n }\n }\n };\n };\n}\nhttpProxy.createRightProxy = createRightProxy;\n\nfunction ProxyServer(options) {\n EE3.call(this);\n\n options = options || {};\n options.prependPath = options.prependPath === false ? false : true;\n\n this.web = this.proxyRequest = createRightProxy('web')(options);\n this.ws = this.proxyWebsocketRequest = createRightProxy('ws')(options);\n this.options = options;\n\n this.webPasses = Object.keys(web).map(function(pass) {\n return web[pass];\n });\n\n this.wsPasses = Object.keys(ws).map(function(pass) {\n return ws[pass];\n });\n\n this.on('error', this.onError, this);\n\n}\n\n(__webpack_require__(/*! util */ \"util\").inherits)(ProxyServer, EE3);\n\nProxyServer.prototype.onError = function (err) {\n //\n // Remark: Replicate node core behavior using EE3\n // so we force people to handle their own errors\n //\n if(this.listeners('error').length === 1) {\n throw err;\n }\n};\n\nProxyServer.prototype.listen = function(port, hostname) {\n var self = this,\n closure = function(req, res) { self.web(req, res); };\n\n this._server = this.options.ssl ?\n https.createServer(this.options.ssl, closure) :\n http.createServer(closure);\n\n if(this.options.ws) {\n this._server.on('upgrade', function(req, socket, head) { self.ws(req, socket, head); });\n }\n\n this._server.listen(port, hostname);\n\n return this;\n};\n\nProxyServer.prototype.close = function(callback) {\n var self = this;\n if (this._server) {\n this._server.close(done);\n }\n\n // Wrap callback to nullify server after all open connections are closed.\n function done() {\n self._server = null;\n if (callback) {\n callback.apply(null, arguments);\n }\n };\n};\n\nProxyServer.prototype.before = function(type, passName, callback) {\n if (type !== 'ws' && type !== 'web') {\n throw new Error('type must be `web` or `ws`');\n }\n var passes = (type === 'ws') ? this.wsPasses : this.webPasses,\n i = false;\n\n passes.forEach(function(v, idx) {\n if(v.name === passName) i = idx;\n })\n\n if(i === false) throw new Error('No such pass');\n\n passes.splice(i, 0, callback);\n};\nProxyServer.prototype.after = function(type, passName, callback) {\n if (type !== 'ws' && type !== 'web') {\n throw new Error('type must be `web` or `ws`');\n }\n var passes = (type === 'ws') ? this.wsPasses : this.webPasses,\n i = false;\n\n passes.forEach(function(v, idx) {\n if(v.name === passName) i = idx;\n })\n\n if(i === false) throw new Error('No such pass');\n\n passes.splice(i++, 0, callback);\n};\n\n\n//# sourceURL=webpack://open-lens/./node_modules/http-proxy/lib/http-proxy/index.js?");
14095
-
14096
- /***/ }),
14097
-
14098
- /***/ "./node_modules/http-proxy/lib/http-proxy/passes/web-incoming.js":
14099
- /*!***********************************************************************!*\
14100
- !*** ./node_modules/http-proxy/lib/http-proxy/passes/web-incoming.js ***!
14101
- \***********************************************************************/
14102
- /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
14103
-
14104
- eval("var httpNative = __webpack_require__(/*! http */ \"http\"),\n httpsNative = __webpack_require__(/*! https */ \"https\"),\n web_o = __webpack_require__(/*! ./web-outgoing */ \"./node_modules/http-proxy/lib/http-proxy/passes/web-outgoing.js\"),\n common = __webpack_require__(/*! ../common */ \"./node_modules/http-proxy/lib/http-proxy/common.js\"),\n followRedirects = __webpack_require__(/*! follow-redirects */ \"./node_modules/follow-redirects/index.js\");\n\nweb_o = Object.keys(web_o).map(function(pass) {\n return web_o[pass];\n});\n\nvar nativeAgents = { http: httpNative, https: httpsNative };\n\n/*!\n * Array of passes.\n *\n * A `pass` is just a function that is executed on `req, res, options`\n * so that you can easily add new checks while still keeping the base\n * flexible.\n */\n\n\nmodule.exports = {\n\n /**\n * Sets `content-length` to '0' if request is of DELETE type.\n *\n * @param {ClientRequest} Req Request object\n * @param {IncomingMessage} Res Response object\n * @param {Object} Options Config object passed to the proxy\n *\n * @api private\n */\n\n deleteLength: function deleteLength(req, res, options) {\n if((req.method === 'DELETE' || req.method === 'OPTIONS')\n && !req.headers['content-length']) {\n req.headers['content-length'] = '0';\n delete req.headers['transfer-encoding'];\n }\n },\n\n /**\n * Sets timeout in request socket if it was specified in options.\n *\n * @param {ClientRequest} Req Request object\n * @param {IncomingMessage} Res Response object\n * @param {Object} Options Config object passed to the proxy\n *\n * @api private\n */\n\n timeout: function timeout(req, res, options) {\n if(options.timeout) {\n req.socket.setTimeout(options.timeout);\n }\n },\n\n /**\n * Sets `x-forwarded-*` headers if specified in config.\n *\n * @param {ClientRequest} Req Request object\n * @param {IncomingMessage} Res Response object\n * @param {Object} Options Config object passed to the proxy\n *\n * @api private\n */\n\n XHeaders: function XHeaders(req, res, options) {\n if(!options.xfwd) return;\n\n var encrypted = req.isSpdy || common.hasEncryptedConnection(req);\n var values = {\n for : req.connection.remoteAddress || req.socket.remoteAddress,\n port : common.getPort(req),\n proto: encrypted ? 'https' : 'http'\n };\n\n ['for', 'port', 'proto'].forEach(function(header) {\n req.headers['x-forwarded-' + header] =\n (req.headers['x-forwarded-' + header] || '') +\n (req.headers['x-forwarded-' + header] ? ',' : '') +\n values[header];\n });\n\n req.headers['x-forwarded-host'] = req.headers['x-forwarded-host'] || req.headers['host'] || '';\n },\n\n /**\n * Does the actual proxying. If `forward` is enabled fires up\n * a ForwardStream, same happens for ProxyStream. The request\n * just dies otherwise.\n *\n * @param {ClientRequest} Req Request object\n * @param {IncomingMessage} Res Response object\n * @param {Object} Options Config object passed to the proxy\n *\n * @api private\n */\n\n stream: function stream(req, res, options, _, server, clb) {\n\n // And we begin!\n server.emit('start', req, res, options.target || options.forward);\n\n var agents = options.followRedirects ? followRedirects : nativeAgents;\n var http = agents.http;\n var https = agents.https;\n\n if(options.forward) {\n // If forward enable, so just pipe the request\n var forwardReq = (options.forward.protocol === 'https:' ? https : http).request(\n common.setupOutgoing(options.ssl || {}, options, req, 'forward')\n );\n\n // error handler (e.g. ECONNRESET, ECONNREFUSED)\n // Handle errors on incoming request as well as it makes sense to\n var forwardError = createErrorHandler(forwardReq, options.forward);\n req.on('error', forwardError);\n forwardReq.on('error', forwardError);\n\n (options.buffer || req).pipe(forwardReq);\n if(!options.target) { return res.end(); }\n }\n\n // Request initalization\n var proxyReq = (options.target.protocol === 'https:' ? https : http).request(\n common.setupOutgoing(options.ssl || {}, options, req)\n );\n\n // Enable developers to modify the proxyReq before headers are sent\n proxyReq.on('socket', function(socket) {\n if(server && !proxyReq.getHeader('expect')) {\n server.emit('proxyReq', proxyReq, req, res, options);\n }\n });\n\n // allow outgoing socket to timeout so that we could\n // show an error page at the initial request\n if(options.proxyTimeout) {\n proxyReq.setTimeout(options.proxyTimeout, function() {\n proxyReq.abort();\n });\n }\n\n // Ensure we abort proxy if request is aborted\n req.on('aborted', function () {\n proxyReq.abort();\n });\n\n // handle errors in proxy and incoming request, just like for forward proxy\n var proxyError = createErrorHandler(proxyReq, options.target);\n req.on('error', proxyError);\n proxyReq.on('error', proxyError);\n\n function createErrorHandler(proxyReq, url) {\n return function proxyError(err) {\n if (req.socket.destroyed && err.code === 'ECONNRESET') {\n server.emit('econnreset', err, req, res, url);\n return proxyReq.abort();\n }\n\n if (clb) {\n clb(err, req, res, url);\n } else {\n server.emit('error', err, req, res, url);\n }\n }\n }\n\n (options.buffer || req).pipe(proxyReq);\n\n proxyReq.on('response', function(proxyRes) {\n if(server) { server.emit('proxyRes', proxyRes, req, res); }\n\n if(!res.headersSent && !options.selfHandleResponse) {\n for(var i=0; i < web_o.length; i++) {\n if(web_o[i](req, res, proxyRes, options)) { break; }\n }\n }\n\n if (!res.finished) {\n // Allow us to listen when the proxy has completed\n proxyRes.on('end', function () {\n if (server) server.emit('end', req, res, proxyRes);\n });\n // We pipe to the response unless its expected to be handled by the user\n if (!options.selfHandleResponse) proxyRes.pipe(res);\n } else {\n if (server) server.emit('end', req, res, proxyRes);\n }\n });\n }\n\n};\n\n\n//# sourceURL=webpack://open-lens/./node_modules/http-proxy/lib/http-proxy/passes/web-incoming.js?");
14105
-
14106
- /***/ }),
14107
-
14108
- /***/ "./node_modules/http-proxy/lib/http-proxy/passes/web-outgoing.js":
14109
- /*!***********************************************************************!*\
14110
- !*** ./node_modules/http-proxy/lib/http-proxy/passes/web-outgoing.js ***!
14111
- \***********************************************************************/
14112
- /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
14113
-
14114
- eval("var url = __webpack_require__(/*! url */ \"url\"),\n common = __webpack_require__(/*! ../common */ \"./node_modules/http-proxy/lib/http-proxy/common.js\");\n\n\nvar redirectRegex = /^201|30(1|2|7|8)$/;\n\n/*!\n * Array of passes.\n *\n * A `pass` is just a function that is executed on `req, res, options`\n * so that you can easily add new checks while still keeping the base\n * flexible.\n */\n\nmodule.exports = { // <--\n\n /**\n * If is a HTTP 1.0 request, remove chunk headers\n *\n * @param {ClientRequest} Req Request object\n * @param {IncomingMessage} Res Response object\n * @param {proxyResponse} Res Response object from the proxy request\n *\n * @api private\n */\n removeChunked: function removeChunked(req, res, proxyRes) {\n if (req.httpVersion === '1.0') {\n delete proxyRes.headers['transfer-encoding'];\n }\n },\n\n /**\n * If is a HTTP 1.0 request, set the correct connection header\n * or if connection header not present, then use `keep-alive`\n *\n * @param {ClientRequest} Req Request object\n * @param {IncomingMessage} Res Response object\n * @param {proxyResponse} Res Response object from the proxy request\n *\n * @api private\n */\n setConnection: function setConnection(req, res, proxyRes) {\n if (req.httpVersion === '1.0') {\n proxyRes.headers.connection = req.headers.connection || 'close';\n } else if (req.httpVersion !== '2.0' && !proxyRes.headers.connection) {\n proxyRes.headers.connection = req.headers.connection || 'keep-alive';\n }\n },\n\n setRedirectHostRewrite: function setRedirectHostRewrite(req, res, proxyRes, options) {\n if ((options.hostRewrite || options.autoRewrite || options.protocolRewrite)\n && proxyRes.headers['location']\n && redirectRegex.test(proxyRes.statusCode)) {\n var target = url.parse(options.target);\n var u = url.parse(proxyRes.headers['location']);\n\n // make sure the redirected host matches the target host before rewriting\n if (target.host != u.host) {\n return;\n }\n\n if (options.hostRewrite) {\n u.host = options.hostRewrite;\n } else if (options.autoRewrite) {\n u.host = req.headers['host'];\n }\n if (options.protocolRewrite) {\n u.protocol = options.protocolRewrite;\n }\n\n proxyRes.headers['location'] = u.format();\n }\n },\n /**\n * Copy headers from proxyResponse to response\n * set each header in response object.\n *\n * @param {ClientRequest} Req Request object\n * @param {IncomingMessage} Res Response object\n * @param {proxyResponse} Res Response object from the proxy request\n * @param {Object} Options options.cookieDomainRewrite: Config to rewrite cookie domain\n *\n * @api private\n */\n writeHeaders: function writeHeaders(req, res, proxyRes, options) {\n var rewriteCookieDomainConfig = options.cookieDomainRewrite,\n rewriteCookiePathConfig = options.cookiePathRewrite,\n preserveHeaderKeyCase = options.preserveHeaderKeyCase,\n rawHeaderKeyMap,\n setHeader = function(key, header) {\n if (header == undefined) return;\n if (rewriteCookieDomainConfig && key.toLowerCase() === 'set-cookie') {\n header = common.rewriteCookieProperty(header, rewriteCookieDomainConfig, 'domain');\n }\n if (rewriteCookiePathConfig && key.toLowerCase() === 'set-cookie') {\n header = common.rewriteCookieProperty(header, rewriteCookiePathConfig, 'path');\n }\n res.setHeader(String(key).trim(), header);\n };\n\n if (typeof rewriteCookieDomainConfig === 'string') { //also test for ''\n rewriteCookieDomainConfig = { '*': rewriteCookieDomainConfig };\n }\n\n if (typeof rewriteCookiePathConfig === 'string') { //also test for ''\n rewriteCookiePathConfig = { '*': rewriteCookiePathConfig };\n }\n\n // message.rawHeaders is added in: v0.11.6\n // https://nodejs.org/api/http.html#http_message_rawheaders\n if (preserveHeaderKeyCase && proxyRes.rawHeaders != undefined) {\n rawHeaderKeyMap = {};\n for (var i = 0; i < proxyRes.rawHeaders.length; i += 2) {\n var key = proxyRes.rawHeaders[i];\n rawHeaderKeyMap[key.toLowerCase()] = key;\n }\n }\n\n Object.keys(proxyRes.headers).forEach(function(key) {\n var header = proxyRes.headers[key];\n if (preserveHeaderKeyCase && rawHeaderKeyMap) {\n key = rawHeaderKeyMap[key] || key;\n }\n setHeader(key, header);\n });\n },\n\n /**\n * Set the statusCode from the proxyResponse\n *\n * @param {ClientRequest} Req Request object\n * @param {IncomingMessage} Res Response object\n * @param {proxyResponse} Res Response object from the proxy request\n *\n * @api private\n */\n writeStatusCode: function writeStatusCode(req, res, proxyRes) {\n // From Node.js docs: response.writeHead(statusCode[, statusMessage][, headers])\n if(proxyRes.statusMessage) {\n res.statusCode = proxyRes.statusCode;\n res.statusMessage = proxyRes.statusMessage;\n } else {\n res.statusCode = proxyRes.statusCode;\n }\n }\n\n};\n\n\n//# sourceURL=webpack://open-lens/./node_modules/http-proxy/lib/http-proxy/passes/web-outgoing.js?");
14115
-
14116
- /***/ }),
14117
-
14118
- /***/ "./node_modules/http-proxy/lib/http-proxy/passes/ws-incoming.js":
14119
- /*!**********************************************************************!*\
14120
- !*** ./node_modules/http-proxy/lib/http-proxy/passes/ws-incoming.js ***!
14121
- \**********************************************************************/
14122
- /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
14123
-
14124
- eval("var http = __webpack_require__(/*! http */ \"http\"),\n https = __webpack_require__(/*! https */ \"https\"),\n common = __webpack_require__(/*! ../common */ \"./node_modules/http-proxy/lib/http-proxy/common.js\");\n\n/*!\n * Array of passes.\n *\n * A `pass` is just a function that is executed on `req, socket, options`\n * so that you can easily add new checks while still keeping the base\n * flexible.\n */\n\n/*\n * Websockets Passes\n *\n */\n\n\nmodule.exports = {\n /**\n * WebSocket requests must have the `GET` method and\n * the `upgrade:websocket` header\n *\n * @param {ClientRequest} Req Request object\n * @param {Socket} Websocket\n *\n * @api private\n */\n\n checkMethodAndHeader : function checkMethodAndHeader(req, socket) {\n if (req.method !== 'GET' || !req.headers.upgrade) {\n socket.destroy();\n return true;\n }\n\n if (req.headers.upgrade.toLowerCase() !== 'websocket') {\n socket.destroy();\n return true;\n }\n },\n\n /**\n * Sets `x-forwarded-*` headers if specified in config.\n *\n * @param {ClientRequest} Req Request object\n * @param {Socket} Websocket\n * @param {Object} Options Config object passed to the proxy\n *\n * @api private\n */\n\n XHeaders : function XHeaders(req, socket, options) {\n if(!options.xfwd) return;\n\n var values = {\n for : req.connection.remoteAddress || req.socket.remoteAddress,\n port : common.getPort(req),\n proto: common.hasEncryptedConnection(req) ? 'wss' : 'ws'\n };\n\n ['for', 'port', 'proto'].forEach(function(header) {\n req.headers['x-forwarded-' + header] =\n (req.headers['x-forwarded-' + header] || '') +\n (req.headers['x-forwarded-' + header] ? ',' : '') +\n values[header];\n });\n },\n\n /**\n * Does the actual proxying. Make the request and upgrade it\n * send the Switching Protocols request and pipe the sockets.\n *\n * @param {ClientRequest} Req Request object\n * @param {Socket} Websocket\n * @param {Object} Options Config object passed to the proxy\n *\n * @api private\n */\n stream : function stream(req, socket, options, head, server, clb) {\n\n var createHttpHeader = function(line, headers) {\n return Object.keys(headers).reduce(function (head, key) {\n var value = headers[key];\n\n if (!Array.isArray(value)) {\n head.push(key + ': ' + value);\n return head;\n }\n\n for (var i = 0; i < value.length; i++) {\n head.push(key + ': ' + value[i]);\n }\n return head;\n }, [line])\n .join('\\r\\n') + '\\r\\n\\r\\n';\n }\n\n common.setupSocket(socket);\n\n if (head && head.length) socket.unshift(head);\n\n\n var proxyReq = (common.isSSL.test(options.target.protocol) ? https : http).request(\n common.setupOutgoing(options.ssl || {}, options, req)\n );\n\n // Enable developers to modify the proxyReq before headers are sent\n if (server) { server.emit('proxyReqWs', proxyReq, req, socket, options, head); }\n\n // Error Handler\n proxyReq.on('error', onOutgoingError);\n proxyReq.on('response', function (res) {\n // if upgrade event isn't going to happen, close the socket\n if (!res.upgrade) {\n socket.write(createHttpHeader('HTTP/' + res.httpVersion + ' ' + res.statusCode + ' ' + res.statusMessage, res.headers));\n res.pipe(socket);\n }\n });\n\n proxyReq.on('upgrade', function(proxyRes, proxySocket, proxyHead) {\n proxySocket.on('error', onOutgoingError);\n\n // Allow us to listen when the websocket has completed\n proxySocket.on('end', function () {\n server.emit('close', proxyRes, proxySocket, proxyHead);\n });\n\n // The pipe below will end proxySocket if socket closes cleanly, but not\n // if it errors (eg, vanishes from the net and starts returning\n // EHOSTUNREACH). We need to do that explicitly.\n socket.on('error', function () {\n proxySocket.end();\n });\n\n common.setupSocket(proxySocket);\n\n if (proxyHead && proxyHead.length) proxySocket.unshift(proxyHead);\n\n //\n // Remark: Handle writing the headers to the socket when switching protocols\n // Also handles when a header is an array\n //\n socket.write(createHttpHeader('HTTP/1.1 101 Switching Protocols', proxyRes.headers));\n\n proxySocket.pipe(socket).pipe(proxySocket);\n\n server.emit('open', proxySocket);\n server.emit('proxySocket', proxySocket); //DEPRECATED.\n });\n\n return proxyReq.end(); // XXX: CHECK IF THIS IS THIS CORRECT\n\n function onOutgoingError(err) {\n if (clb) {\n clb(err, req, socket);\n } else {\n server.emit('error', err, req, socket);\n }\n socket.end();\n }\n }\n};\n\n\n//# sourceURL=webpack://open-lens/./node_modules/http-proxy/lib/http-proxy/passes/ws-incoming.js?");
14125
-
14126
- /***/ }),
14127
-
14128
14027
  /***/ "./node_modules/http-signature/lib/index.js":
14129
14028
  /*!**************************************************!*\
14130
14029
  !*** ./node_modules/http-signature/lib/index.js ***!
@@ -14346,7 +14245,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
14346
14245
  \**************************************/
14347
14246
  /***/ ((module) => {
14348
14247
 
14349
- eval("// A simple implementation of make-array\nfunction makeArray (subject) {\n return Array.isArray(subject)\n ? subject\n : [subject]\n}\n\nconst EMPTY = ''\nconst SPACE = ' '\nconst ESCAPE = '\\\\'\nconst REGEX_TEST_BLANK_LINE = /^\\s+$/\nconst REGEX_REPLACE_LEADING_EXCAPED_EXCLAMATION = /^\\\\!/\nconst REGEX_REPLACE_LEADING_EXCAPED_HASH = /^\\\\#/\nconst REGEX_SPLITALL_CRLF = /\\r?\\n/g\n// /foo,\n// ./foo,\n// ../foo,\n// .\n// ..\nconst REGEX_TEST_INVALID_PATH = /^\\.*\\/|^\\.+$/\n\nconst SLASH = '/'\nconst KEY_IGNORE = typeof Symbol !== 'undefined'\n ? Symbol.for('node-ignore')\n /* istanbul ignore next */\n : 'node-ignore'\n\nconst define = (object, key, value) =>\n Object.defineProperty(object, key, {value})\n\nconst REGEX_REGEXP_RANGE = /([0-z])-([0-z])/g\n\n// Sanitize the range of a regular expression\n// The cases are complicated, see test cases for details\nconst sanitizeRange = range => range.replace(\n REGEX_REGEXP_RANGE,\n (match, from, to) => from.charCodeAt(0) <= to.charCodeAt(0)\n ? match\n // Invalid range (out of order) which is ok for gitignore rules but\n // fatal for JavaScript regular expression, so eliminate it.\n : EMPTY\n)\n\n// See fixtures #59\nconst cleanRangeBackSlash = slashes => {\n const {length} = slashes\n return slashes.slice(0, length - length % 2)\n}\n\n// > If the pattern ends with a slash,\n// > it is removed for the purpose of the following description,\n// > but it would only find a match with a directory.\n// > In other words, foo/ will match a directory foo and paths underneath it,\n// > but will not match a regular file or a symbolic link foo\n// > (this is consistent with the way how pathspec works in general in Git).\n// '`foo/`' will not match regular file '`foo`' or symbolic link '`foo`'\n// -> ignore-rules will not deal with it, because it costs extra `fs.stat` call\n// you could use option `mark: true` with `glob`\n\n// '`foo/`' should not continue with the '`..`'\nconst REPLACERS = [\n\n // > Trailing spaces are ignored unless they are quoted with backslash (\"\\\")\n [\n // (a\\ ) -> (a )\n // (a ) -> (a)\n // (a \\ ) -> (a )\n /\\\\?\\s+$/,\n match => match.indexOf('\\\\') === 0\n ? SPACE\n : EMPTY\n ],\n\n // replace (\\ ) with ' '\n [\n /\\\\\\s/g,\n () => SPACE\n ],\n\n // Escape metacharacters\n // which is written down by users but means special for regular expressions.\n\n // > There are 12 characters with special meanings:\n // > - the backslash \\,\n // > - the caret ^,\n // > - the dollar sign $,\n // > - the period or dot .,\n // > - the vertical bar or pipe symbol |,\n // > - the question mark ?,\n // > - the asterisk or star *,\n // > - the plus sign +,\n // > - the opening parenthesis (,\n // > - the closing parenthesis ),\n // > - and the opening square bracket [,\n // > - the opening curly brace {,\n // > These special characters are often called \"metacharacters\".\n [\n /[\\\\$.|*+(){^]/g,\n match => `\\\\${match}`\n ],\n\n [\n // > a question mark (?) matches a single character\n /(?!\\\\)\\?/g,\n () => '[^/]'\n ],\n\n // leading slash\n [\n\n // > A leading slash matches the beginning of the pathname.\n // > For example, \"/*.c\" matches \"cat-file.c\" but not \"mozilla-sha1/sha1.c\".\n // A leading slash matches the beginning of the pathname\n /^\\//,\n () => '^'\n ],\n\n // replace special metacharacter slash after the leading slash\n [\n /\\//g,\n () => '\\\\/'\n ],\n\n [\n // > A leading \"**\" followed by a slash means match in all directories.\n // > For example, \"**/foo\" matches file or directory \"foo\" anywhere,\n // > the same as pattern \"foo\".\n // > \"**/foo/bar\" matches file or directory \"bar\" anywhere that is directly\n // > under directory \"foo\".\n // Notice that the '*'s have been replaced as '\\\\*'\n /^\\^*\\\\\\*\\\\\\*\\\\\\//,\n\n // '**/foo' <-> 'foo'\n () => '^(?:.*\\\\/)?'\n ],\n\n // starting\n [\n // there will be no leading '/'\n // (which has been replaced by section \"leading slash\")\n // If starts with '**', adding a '^' to the regular expression also works\n /^(?=[^^])/,\n function startingReplacer () {\n // If has a slash `/` at the beginning or middle\n return !/\\/(?!$)/.test(this)\n // > Prior to 2.22.1\n // > If the pattern does not contain a slash /,\n // > Git treats it as a shell glob pattern\n // Actually, if there is only a trailing slash,\n // git also treats it as a shell glob pattern\n\n // After 2.22.1 (compatible but clearer)\n // > If there is a separator at the beginning or middle (or both)\n // > of the pattern, then the pattern is relative to the directory\n // > level of the particular .gitignore file itself.\n // > Otherwise the pattern may also match at any level below\n // > the .gitignore level.\n ? '(?:^|\\\\/)'\n\n // > Otherwise, Git treats the pattern as a shell glob suitable for\n // > consumption by fnmatch(3)\n : '^'\n }\n ],\n\n // two globstars\n [\n // Use lookahead assertions so that we could match more than one `'/**'`\n /\\\\\\/\\\\\\*\\\\\\*(?=\\\\\\/|$)/g,\n\n // Zero, one or several directories\n // should not use '*', or it will be replaced by the next replacer\n\n // Check if it is not the last `'/**'`\n (_, index, str) => index + 6 < str.length\n\n // case: /**/\n // > A slash followed by two consecutive asterisks then a slash matches\n // > zero or more directories.\n // > For example, \"a/**/b\" matches \"a/b\", \"a/x/b\", \"a/x/y/b\" and so on.\n // '/**/'\n ? '(?:\\\\/[^\\\\/]+)*'\n\n // case: /**\n // > A trailing `\"/**\"` matches everything inside.\n\n // #21: everything inside but it should not include the current folder\n : '\\\\/.+'\n ],\n\n // intermediate wildcards\n [\n // Never replace escaped '*'\n // ignore rule '\\*' will match the path '*'\n\n // 'abc.*/' -> go\n // 'abc.*' -> skip this rule\n /(^|[^\\\\]+)\\\\\\*(?=.+)/g,\n\n // '*.js' matches '.js'\n // '*.js' doesn't match 'abc'\n (_, p1) => `${p1}[^\\\\/]*`\n ],\n\n [\n // unescape, revert step 3 except for back slash\n // For example, if a user escape a '\\\\*',\n // after step 3, the result will be '\\\\\\\\\\\\*'\n /\\\\\\\\\\\\(?=[$.|*+(){^])/g,\n () => ESCAPE\n ],\n\n [\n // '\\\\\\\\' -> '\\\\'\n /\\\\\\\\/g,\n () => ESCAPE\n ],\n\n [\n // > The range notation, e.g. [a-zA-Z],\n // > can be used to match one of the characters in a range.\n\n // `\\` is escaped by step 3\n /(\\\\)?\\[([^\\]/]*?)(\\\\*)($|\\])/g,\n (match, leadEscape, range, endEscape, close) => leadEscape === ESCAPE\n // '\\\\[bar]' -> '\\\\\\\\[bar\\\\]'\n ? `\\\\[${range}${cleanRangeBackSlash(endEscape)}${close}`\n : close === ']'\n ? endEscape.length % 2 === 0\n // A normal case, and it is a range notation\n // '[bar]'\n // '[bar\\\\\\\\]'\n ? `[${sanitizeRange(range)}${endEscape}]`\n // Invalid range notaton\n // '[bar\\\\]' -> '[bar\\\\\\\\]'\n : '[]'\n : '[]'\n ],\n\n // ending\n [\n // 'js' will not match 'js.'\n // 'ab' will not match 'abc'\n /(?:[^*])$/,\n\n // WTF!\n // https://git-scm.com/docs/gitignore\n // changes in [2.22.1](https://git-scm.com/docs/gitignore/2.22.1)\n // which re-fixes #24, #38\n\n // > If there is a separator at the end of the pattern then the pattern\n // > will only match directories, otherwise the pattern can match both\n // > files and directories.\n\n // 'js*' will not match 'a.js'\n // 'js/' will not match 'a.js'\n // 'js' will match 'a.js' and 'a.js/'\n match => /\\/$/.test(match)\n // foo/ will not match 'foo'\n ? `${match}$`\n // foo matches 'foo' and 'foo/'\n : `${match}(?=$|\\\\/$)`\n ],\n\n // trailing wildcard\n [\n /(\\^|\\\\\\/)?\\\\\\*$/,\n (_, p1) => {\n const prefix = p1\n // '\\^':\n // '/*' does not match EMPTY\n // '/*' does not match everything\n\n // '\\\\\\/':\n // 'abc/*' does not match 'abc/'\n ? `${p1}[^/]+`\n\n // 'a*' matches 'a'\n // 'a*' matches 'aa'\n : '[^/]*'\n\n return `${prefix}(?=$|\\\\/$)`\n }\n ],\n]\n\n// A simple cache, because an ignore rule only has only one certain meaning\nconst regexCache = Object.create(null)\n\n// @param {pattern}\nconst makeRegex = (pattern, negative, ignorecase) => {\n const r = regexCache[pattern]\n if (r) {\n return r\n }\n\n // const replacers = negative\n // ? NEGATIVE_REPLACERS\n // : POSITIVE_REPLACERS\n\n const source = REPLACERS.reduce(\n (prev, current) => prev.replace(current[0], current[1].bind(pattern)),\n pattern\n )\n\n return regexCache[pattern] = ignorecase\n ? new RegExp(source, 'i')\n : new RegExp(source)\n}\n\nconst isString = subject => typeof subject === 'string'\n\n// > A blank line matches no files, so it can serve as a separator for readability.\nconst checkPattern = pattern => pattern\n && isString(pattern)\n && !REGEX_TEST_BLANK_LINE.test(pattern)\n\n // > A line starting with # serves as a comment.\n && pattern.indexOf('#') !== 0\n\nconst splitPattern = pattern => pattern.split(REGEX_SPLITALL_CRLF)\n\nclass IgnoreRule {\n constructor (\n origin,\n pattern,\n negative,\n regex\n ) {\n this.origin = origin\n this.pattern = pattern\n this.negative = negative\n this.regex = regex\n }\n}\n\nconst createRule = (pattern, ignorecase) => {\n const origin = pattern\n let negative = false\n\n // > An optional prefix \"!\" which negates the pattern;\n if (pattern.indexOf('!') === 0) {\n negative = true\n pattern = pattern.substr(1)\n }\n\n pattern = pattern\n // > Put a backslash (\"\\\") in front of the first \"!\" for patterns that\n // > begin with a literal \"!\", for example, `\"\\!important!.txt\"`.\n .replace(REGEX_REPLACE_LEADING_EXCAPED_EXCLAMATION, '!')\n // > Put a backslash (\"\\\") in front of the first hash for patterns that\n // > begin with a hash.\n .replace(REGEX_REPLACE_LEADING_EXCAPED_HASH, '#')\n\n const regex = makeRegex(pattern, negative, ignorecase)\n\n return new IgnoreRule(\n origin,\n pattern,\n negative,\n regex\n )\n}\n\nconst throwError = (message, Ctor) => {\n throw new Ctor(message)\n}\n\nconst checkPath = (path, originalPath, doThrow) => {\n if (!isString(path)) {\n return doThrow(\n `path must be a string, but got \\`${originalPath}\\``,\n TypeError\n )\n }\n\n // We don't know if we should ignore EMPTY, so throw\n if (!path) {\n return doThrow(`path must not be empty`, TypeError)\n }\n\n // Check if it is a relative path\n if (checkPath.isNotRelative(path)) {\n const r = '`path.relative()`d'\n return doThrow(\n `path should be a ${r} string, but got \"${originalPath}\"`,\n RangeError\n )\n }\n\n return true\n}\n\nconst isNotRelative = path => REGEX_TEST_INVALID_PATH.test(path)\n\ncheckPath.isNotRelative = isNotRelative\ncheckPath.convert = p => p\n\nclass Ignore {\n constructor ({\n ignorecase = true\n } = {}) {\n this._rules = []\n this._ignorecase = ignorecase\n define(this, KEY_IGNORE, true)\n this._initCache()\n }\n\n _initCache () {\n this._ignoreCache = Object.create(null)\n this._testCache = Object.create(null)\n }\n\n _addPattern (pattern) {\n // #32\n if (pattern && pattern[KEY_IGNORE]) {\n this._rules = this._rules.concat(pattern._rules)\n this._added = true\n return\n }\n\n if (checkPattern(pattern)) {\n const rule = createRule(pattern, this._ignorecase)\n this._added = true\n this._rules.push(rule)\n }\n }\n\n // @param {Array<string> | string | Ignore} pattern\n add (pattern) {\n this._added = false\n\n makeArray(\n isString(pattern)\n ? splitPattern(pattern)\n : pattern\n ).forEach(this._addPattern, this)\n\n // Some rules have just added to the ignore,\n // making the behavior changed.\n if (this._added) {\n this._initCache()\n }\n\n return this\n }\n\n // legacy\n addPattern (pattern) {\n return this.add(pattern)\n }\n\n // | ignored : unignored\n // negative | 0:0 | 0:1 | 1:0 | 1:1\n // -------- | ------- | ------- | ------- | --------\n // 0 | TEST | TEST | SKIP | X\n // 1 | TESTIF | SKIP | TEST | X\n\n // - SKIP: always skip\n // - TEST: always test\n // - TESTIF: only test if checkUnignored\n // - X: that never happen\n\n // @param {boolean} whether should check if the path is unignored,\n // setting `checkUnignored` to `false` could reduce additional\n // path matching.\n\n // @returns {TestResult} true if a file is ignored\n _testOne (path, checkUnignored) {\n let ignored = false\n let unignored = false\n\n this._rules.forEach(rule => {\n const {negative} = rule\n if (\n unignored === negative && ignored !== unignored\n || negative && !ignored && !unignored && !checkUnignored\n ) {\n return\n }\n\n const matched = rule.regex.test(path)\n\n if (matched) {\n ignored = !negative\n unignored = negative\n }\n })\n\n return {\n ignored,\n unignored\n }\n }\n\n // @returns {TestResult}\n _test (originalPath, cache, checkUnignored, slices) {\n const path = originalPath\n // Supports nullable path\n && checkPath.convert(originalPath)\n\n checkPath(path, originalPath, throwError)\n\n return this._t(path, cache, checkUnignored, slices)\n }\n\n _t (path, cache, checkUnignored, slices) {\n if (path in cache) {\n return cache[path]\n }\n\n if (!slices) {\n // path/to/a.js\n // ['path', 'to', 'a.js']\n slices = path.split(SLASH)\n }\n\n slices.pop()\n\n // If the path has no parent directory, just test it\n if (!slices.length) {\n return cache[path] = this._testOne(path, checkUnignored)\n }\n\n const parent = this._t(\n slices.join(SLASH) + SLASH,\n cache,\n checkUnignored,\n slices\n )\n\n // If the path contains a parent directory, check the parent first\n return cache[path] = parent.ignored\n // > It is not possible to re-include a file if a parent directory of\n // > that file is excluded.\n ? parent\n : this._testOne(path, checkUnignored)\n }\n\n ignores (path) {\n return this._test(path, this._ignoreCache, false).ignored\n }\n\n createFilter () {\n return path => !this.ignores(path)\n }\n\n filter (paths) {\n return makeArray(paths).filter(this.createFilter())\n }\n\n // @returns {TestResult}\n test (path) {\n return this._test(path, this._testCache, true)\n }\n}\n\nconst factory = options => new Ignore(options)\n\nconst returnFalse = () => false\n\nconst isPathValid = path =>\n checkPath(path && checkPath.convert(path), path, returnFalse)\n\nfactory.isPathValid = isPathValid\n\n// Fixes typescript\nfactory.default = factory\n\nmodule.exports = factory\n\n// Windows\n// --------------------------------------------------------------\n/* istanbul ignore if */\nif (\n // Detect `process` so that it can run in browsers.\n typeof process !== 'undefined'\n && (\n process.env && process.env.IGNORE_TEST_WIN32\n || process.platform === 'win32'\n )\n) {\n /* eslint no-control-regex: \"off\" */\n const makePosix = str => /^\\\\\\\\\\?\\\\/.test(str)\n || /[\"<>|\\u0000-\\u001F]+/u.test(str)\n ? str\n : str.replace(/\\\\/g, '/')\n\n checkPath.convert = makePosix\n\n // 'C:\\\\foo' <- 'C:\\\\foo' has been converted to 'C:/'\n // 'd:\\\\foo'\n const REGIX_IS_WINDOWS_PATH_ABSOLUTE = /^[a-z]:\\//i\n checkPath.isNotRelative = path =>\n REGIX_IS_WINDOWS_PATH_ABSOLUTE.test(path)\n || isNotRelative(path)\n}\n\n\n//# sourceURL=webpack://open-lens/./node_modules/ignore/index.js?");
14248
+ eval("// A simple implementation of make-array\nfunction makeArray (subject) {\n return Array.isArray(subject)\n ? subject\n : [subject]\n}\n\nconst EMPTY = ''\nconst SPACE = ' '\nconst ESCAPE = '\\\\'\nconst REGEX_TEST_BLANK_LINE = /^\\s+$/\nconst REGEX_REPLACE_LEADING_EXCAPED_EXCLAMATION = /^\\\\!/\nconst REGEX_REPLACE_LEADING_EXCAPED_HASH = /^\\\\#/\nconst REGEX_SPLITALL_CRLF = /\\r?\\n/g\n// /foo,\n// ./foo,\n// ../foo,\n// .\n// ..\nconst REGEX_TEST_INVALID_PATH = /^\\.*\\/|^\\.+$/\n\nconst SLASH = '/'\nconst KEY_IGNORE = typeof Symbol !== 'undefined'\n ? Symbol.for('node-ignore')\n /* istanbul ignore next */\n : 'node-ignore'\n\nconst define = (object, key, value) =>\n Object.defineProperty(object, key, {value})\n\nconst REGEX_REGEXP_RANGE = /([0-z])-([0-z])/g\n\nconst RETURN_FALSE = () => false\n\n// Sanitize the range of a regular expression\n// The cases are complicated, see test cases for details\nconst sanitizeRange = range => range.replace(\n REGEX_REGEXP_RANGE,\n (match, from, to) => from.charCodeAt(0) <= to.charCodeAt(0)\n ? match\n // Invalid range (out of order) which is ok for gitignore rules but\n // fatal for JavaScript regular expression, so eliminate it.\n : EMPTY\n)\n\n// See fixtures #59\nconst cleanRangeBackSlash = slashes => {\n const {length} = slashes\n return slashes.slice(0, length - length % 2)\n}\n\n// > If the pattern ends with a slash,\n// > it is removed for the purpose of the following description,\n// > but it would only find a match with a directory.\n// > In other words, foo/ will match a directory foo and paths underneath it,\n// > but will not match a regular file or a symbolic link foo\n// > (this is consistent with the way how pathspec works in general in Git).\n// '`foo/`' will not match regular file '`foo`' or symbolic link '`foo`'\n// -> ignore-rules will not deal with it, because it costs extra `fs.stat` call\n// you could use option `mark: true` with `glob`\n\n// '`foo/`' should not continue with the '`..`'\nconst REPLACERS = [\n\n // > Trailing spaces are ignored unless they are quoted with backslash (\"\\\")\n [\n // (a\\ ) -> (a )\n // (a ) -> (a)\n // (a \\ ) -> (a )\n /\\\\?\\s+$/,\n match => match.indexOf('\\\\') === 0\n ? SPACE\n : EMPTY\n ],\n\n // replace (\\ ) with ' '\n [\n /\\\\\\s/g,\n () => SPACE\n ],\n\n // Escape metacharacters\n // which is written down by users but means special for regular expressions.\n\n // > There are 12 characters with special meanings:\n // > - the backslash \\,\n // > - the caret ^,\n // > - the dollar sign $,\n // > - the period or dot .,\n // > - the vertical bar or pipe symbol |,\n // > - the question mark ?,\n // > - the asterisk or star *,\n // > - the plus sign +,\n // > - the opening parenthesis (,\n // > - the closing parenthesis ),\n // > - and the opening square bracket [,\n // > - the opening curly brace {,\n // > These special characters are often called \"metacharacters\".\n [\n /[\\\\$.|*+(){^]/g,\n match => `\\\\${match}`\n ],\n\n [\n // > a question mark (?) matches a single character\n /(?!\\\\)\\?/g,\n () => '[^/]'\n ],\n\n // leading slash\n [\n\n // > A leading slash matches the beginning of the pathname.\n // > For example, \"/*.c\" matches \"cat-file.c\" but not \"mozilla-sha1/sha1.c\".\n // A leading slash matches the beginning of the pathname\n /^\\//,\n () => '^'\n ],\n\n // replace special metacharacter slash after the leading slash\n [\n /\\//g,\n () => '\\\\/'\n ],\n\n [\n // > A leading \"**\" followed by a slash means match in all directories.\n // > For example, \"**/foo\" matches file or directory \"foo\" anywhere,\n // > the same as pattern \"foo\".\n // > \"**/foo/bar\" matches file or directory \"bar\" anywhere that is directly\n // > under directory \"foo\".\n // Notice that the '*'s have been replaced as '\\\\*'\n /^\\^*\\\\\\*\\\\\\*\\\\\\//,\n\n // '**/foo' <-> 'foo'\n () => '^(?:.*\\\\/)?'\n ],\n\n // starting\n [\n // there will be no leading '/'\n // (which has been replaced by section \"leading slash\")\n // If starts with '**', adding a '^' to the regular expression also works\n /^(?=[^^])/,\n function startingReplacer () {\n // If has a slash `/` at the beginning or middle\n return !/\\/(?!$)/.test(this)\n // > Prior to 2.22.1\n // > If the pattern does not contain a slash /,\n // > Git treats it as a shell glob pattern\n // Actually, if there is only a trailing slash,\n // git also treats it as a shell glob pattern\n\n // After 2.22.1 (compatible but clearer)\n // > If there is a separator at the beginning or middle (or both)\n // > of the pattern, then the pattern is relative to the directory\n // > level of the particular .gitignore file itself.\n // > Otherwise the pattern may also match at any level below\n // > the .gitignore level.\n ? '(?:^|\\\\/)'\n\n // > Otherwise, Git treats the pattern as a shell glob suitable for\n // > consumption by fnmatch(3)\n : '^'\n }\n ],\n\n // two globstars\n [\n // Use lookahead assertions so that we could match more than one `'/**'`\n /\\\\\\/\\\\\\*\\\\\\*(?=\\\\\\/|$)/g,\n\n // Zero, one or several directories\n // should not use '*', or it will be replaced by the next replacer\n\n // Check if it is not the last `'/**'`\n (_, index, str) => index + 6 < str.length\n\n // case: /**/\n // > A slash followed by two consecutive asterisks then a slash matches\n // > zero or more directories.\n // > For example, \"a/**/b\" matches \"a/b\", \"a/x/b\", \"a/x/y/b\" and so on.\n // '/**/'\n ? '(?:\\\\/[^\\\\/]+)*'\n\n // case: /**\n // > A trailing `\"/**\"` matches everything inside.\n\n // #21: everything inside but it should not include the current folder\n : '\\\\/.+'\n ],\n\n // intermediate wildcards\n [\n // Never replace escaped '*'\n // ignore rule '\\*' will match the path '*'\n\n // 'abc.*/' -> go\n // 'abc.*' -> skip this rule\n /(^|[^\\\\]+)\\\\\\*(?=.+)/g,\n\n // '*.js' matches '.js'\n // '*.js' doesn't match 'abc'\n (_, p1) => `${p1}[^\\\\/]*`\n ],\n\n [\n // unescape, revert step 3 except for back slash\n // For example, if a user escape a '\\\\*',\n // after step 3, the result will be '\\\\\\\\\\\\*'\n /\\\\\\\\\\\\(?=[$.|*+(){^])/g,\n () => ESCAPE\n ],\n\n [\n // '\\\\\\\\' -> '\\\\'\n /\\\\\\\\/g,\n () => ESCAPE\n ],\n\n [\n // > The range notation, e.g. [a-zA-Z],\n // > can be used to match one of the characters in a range.\n\n // `\\` is escaped by step 3\n /(\\\\)?\\[([^\\]/]*?)(\\\\*)($|\\])/g,\n (match, leadEscape, range, endEscape, close) => leadEscape === ESCAPE\n // '\\\\[bar]' -> '\\\\\\\\[bar\\\\]'\n ? `\\\\[${range}${cleanRangeBackSlash(endEscape)}${close}`\n : close === ']'\n ? endEscape.length % 2 === 0\n // A normal case, and it is a range notation\n // '[bar]'\n // '[bar\\\\\\\\]'\n ? `[${sanitizeRange(range)}${endEscape}]`\n // Invalid range notaton\n // '[bar\\\\]' -> '[bar\\\\\\\\]'\n : '[]'\n : '[]'\n ],\n\n // ending\n [\n // 'js' will not match 'js.'\n // 'ab' will not match 'abc'\n /(?:[^*])$/,\n\n // WTF!\n // https://git-scm.com/docs/gitignore\n // changes in [2.22.1](https://git-scm.com/docs/gitignore/2.22.1)\n // which re-fixes #24, #38\n\n // > If there is a separator at the end of the pattern then the pattern\n // > will only match directories, otherwise the pattern can match both\n // > files and directories.\n\n // 'js*' will not match 'a.js'\n // 'js/' will not match 'a.js'\n // 'js' will match 'a.js' and 'a.js/'\n match => /\\/$/.test(match)\n // foo/ will not match 'foo'\n ? `${match}$`\n // foo matches 'foo' and 'foo/'\n : `${match}(?=$|\\\\/$)`\n ],\n\n // trailing wildcard\n [\n /(\\^|\\\\\\/)?\\\\\\*$/,\n (_, p1) => {\n const prefix = p1\n // '\\^':\n // '/*' does not match EMPTY\n // '/*' does not match everything\n\n // '\\\\\\/':\n // 'abc/*' does not match 'abc/'\n ? `${p1}[^/]+`\n\n // 'a*' matches 'a'\n // 'a*' matches 'aa'\n : '[^/]*'\n\n return `${prefix}(?=$|\\\\/$)`\n }\n ],\n]\n\n// A simple cache, because an ignore rule only has only one certain meaning\nconst regexCache = Object.create(null)\n\n// @param {pattern}\nconst makeRegex = (pattern, ignoreCase) => {\n let source = regexCache[pattern]\n\n if (!source) {\n source = REPLACERS.reduce(\n (prev, current) => prev.replace(current[0], current[1].bind(pattern)),\n pattern\n )\n regexCache[pattern] = source\n }\n\n return ignoreCase\n ? new RegExp(source, 'i')\n : new RegExp(source)\n}\n\nconst isString = subject => typeof subject === 'string'\n\n// > A blank line matches no files, so it can serve as a separator for readability.\nconst checkPattern = pattern => pattern\n && isString(pattern)\n && !REGEX_TEST_BLANK_LINE.test(pattern)\n\n // > A line starting with # serves as a comment.\n && pattern.indexOf('#') !== 0\n\nconst splitPattern = pattern => pattern.split(REGEX_SPLITALL_CRLF)\n\nclass IgnoreRule {\n constructor (\n origin,\n pattern,\n negative,\n regex\n ) {\n this.origin = origin\n this.pattern = pattern\n this.negative = negative\n this.regex = regex\n }\n}\n\nconst createRule = (pattern, ignoreCase) => {\n const origin = pattern\n let negative = false\n\n // > An optional prefix \"!\" which negates the pattern;\n if (pattern.indexOf('!') === 0) {\n negative = true\n pattern = pattern.substr(1)\n }\n\n pattern = pattern\n // > Put a backslash (\"\\\") in front of the first \"!\" for patterns that\n // > begin with a literal \"!\", for example, `\"\\!important!.txt\"`.\n .replace(REGEX_REPLACE_LEADING_EXCAPED_EXCLAMATION, '!')\n // > Put a backslash (\"\\\") in front of the first hash for patterns that\n // > begin with a hash.\n .replace(REGEX_REPLACE_LEADING_EXCAPED_HASH, '#')\n\n const regex = makeRegex(pattern, ignoreCase)\n\n return new IgnoreRule(\n origin,\n pattern,\n negative,\n regex\n )\n}\n\nconst throwError = (message, Ctor) => {\n throw new Ctor(message)\n}\n\nconst checkPath = (path, originalPath, doThrow) => {\n if (!isString(path)) {\n return doThrow(\n `path must be a string, but got \\`${originalPath}\\``,\n TypeError\n )\n }\n\n // We don't know if we should ignore EMPTY, so throw\n if (!path) {\n return doThrow(`path must not be empty`, TypeError)\n }\n\n // Check if it is a relative path\n if (checkPath.isNotRelative(path)) {\n const r = '`path.relative()`d'\n return doThrow(\n `path should be a ${r} string, but got \"${originalPath}\"`,\n RangeError\n )\n }\n\n return true\n}\n\nconst isNotRelative = path => REGEX_TEST_INVALID_PATH.test(path)\n\ncheckPath.isNotRelative = isNotRelative\ncheckPath.convert = p => p\n\nclass Ignore {\n constructor ({\n ignorecase = true,\n ignoreCase = ignorecase,\n allowRelativePaths = false\n } = {}) {\n define(this, KEY_IGNORE, true)\n\n this._rules = []\n this._ignoreCase = ignoreCase\n this._allowRelativePaths = allowRelativePaths\n this._initCache()\n }\n\n _initCache () {\n this._ignoreCache = Object.create(null)\n this._testCache = Object.create(null)\n }\n\n _addPattern (pattern) {\n // #32\n if (pattern && pattern[KEY_IGNORE]) {\n this._rules = this._rules.concat(pattern._rules)\n this._added = true\n return\n }\n\n if (checkPattern(pattern)) {\n const rule = createRule(pattern, this._ignoreCase)\n this._added = true\n this._rules.push(rule)\n }\n }\n\n // @param {Array<string> | string | Ignore} pattern\n add (pattern) {\n this._added = false\n\n makeArray(\n isString(pattern)\n ? splitPattern(pattern)\n : pattern\n ).forEach(this._addPattern, this)\n\n // Some rules have just added to the ignore,\n // making the behavior changed.\n if (this._added) {\n this._initCache()\n }\n\n return this\n }\n\n // legacy\n addPattern (pattern) {\n return this.add(pattern)\n }\n\n // | ignored : unignored\n // negative | 0:0 | 0:1 | 1:0 | 1:1\n // -------- | ------- | ------- | ------- | --------\n // 0 | TEST | TEST | SKIP | X\n // 1 | TESTIF | SKIP | TEST | X\n\n // - SKIP: always skip\n // - TEST: always test\n // - TESTIF: only test if checkUnignored\n // - X: that never happen\n\n // @param {boolean} whether should check if the path is unignored,\n // setting `checkUnignored` to `false` could reduce additional\n // path matching.\n\n // @returns {TestResult} true if a file is ignored\n _testOne (path, checkUnignored) {\n let ignored = false\n let unignored = false\n\n this._rules.forEach(rule => {\n const {negative} = rule\n if (\n unignored === negative && ignored !== unignored\n || negative && !ignored && !unignored && !checkUnignored\n ) {\n return\n }\n\n const matched = rule.regex.test(path)\n\n if (matched) {\n ignored = !negative\n unignored = negative\n }\n })\n\n return {\n ignored,\n unignored\n }\n }\n\n // @returns {TestResult}\n _test (originalPath, cache, checkUnignored, slices) {\n const path = originalPath\n // Supports nullable path\n && checkPath.convert(originalPath)\n\n checkPath(\n path,\n originalPath,\n this._allowRelativePaths\n ? RETURN_FALSE\n : throwError\n )\n\n return this._t(path, cache, checkUnignored, slices)\n }\n\n _t (path, cache, checkUnignored, slices) {\n if (path in cache) {\n return cache[path]\n }\n\n if (!slices) {\n // path/to/a.js\n // ['path', 'to', 'a.js']\n slices = path.split(SLASH)\n }\n\n slices.pop()\n\n // If the path has no parent directory, just test it\n if (!slices.length) {\n return cache[path] = this._testOne(path, checkUnignored)\n }\n\n const parent = this._t(\n slices.join(SLASH) + SLASH,\n cache,\n checkUnignored,\n slices\n )\n\n // If the path contains a parent directory, check the parent first\n return cache[path] = parent.ignored\n // > It is not possible to re-include a file if a parent directory of\n // > that file is excluded.\n ? parent\n : this._testOne(path, checkUnignored)\n }\n\n ignores (path) {\n return this._test(path, this._ignoreCache, false).ignored\n }\n\n createFilter () {\n return path => !this.ignores(path)\n }\n\n filter (paths) {\n return makeArray(paths).filter(this.createFilter())\n }\n\n // @returns {TestResult}\n test (path) {\n return this._test(path, this._testCache, true)\n }\n}\n\nconst factory = options => new Ignore(options)\n\nconst isPathValid = path =>\n checkPath(path && checkPath.convert(path), path, RETURN_FALSE)\n\nfactory.isPathValid = isPathValid\n\n// Fixes typescript\nfactory.default = factory\n\nmodule.exports = factory\n\n// Windows\n// --------------------------------------------------------------\n/* istanbul ignore if */\nif (\n // Detect `process` so that it can run in browsers.\n typeof process !== 'undefined'\n && (\n process.env && process.env.IGNORE_TEST_WIN32\n || process.platform === 'win32'\n )\n) {\n /* eslint no-control-regex: \"off\" */\n const makePosix = str => /^\\\\\\\\\\?\\\\/.test(str)\n || /[\"<>|\\u0000-\\u001F]+/u.test(str)\n ? str\n : str.replace(/\\\\/g, '/')\n\n checkPath.convert = makePosix\n\n // 'C:\\\\foo' <- 'C:\\\\foo' has been converted to 'C:/'\n // 'd:\\\\foo'\n const REGIX_IS_WINDOWS_PATH_ABSOLUTE = /^[a-z]:\\//i\n checkPath.isNotRelative = path =>\n REGIX_IS_WINDOWS_PATH_ABSOLUTE.test(path)\n || isNotRelative(path)\n}\n\n\n//# sourceURL=webpack://open-lens/./node_modules/ignore/index.js?");
14350
14249
 
14351
14250
  /***/ }),
14352
14251
 
@@ -28342,17 +28241,6 @@ eval("\n\nvar http = __webpack_require__(/*! http */ \"http\")\nvar https = __we
28342
28241
 
28343
28242
  /***/ }),
28344
28243
 
28345
- /***/ "./node_modules/requires-port/index.js":
28346
- /*!*********************************************!*\
28347
- !*** ./node_modules/requires-port/index.js ***!
28348
- \*********************************************/
28349
- /***/ ((module) => {
28350
-
28351
- "use strict";
28352
- eval("\n\n/**\n * Check if we're required to add a port number.\n *\n * @see https://url.spec.whatwg.org/#default-port\n * @param {Number|String} port Port number we need to check\n * @param {String} protocol Protocol we need to check against.\n * @returns {Boolean} Is it a default port for the given protocol\n * @api private\n */\nmodule.exports = function required(port, protocol) {\n protocol = protocol.split(':')[0];\n port = +port;\n\n if (!port) return false;\n\n switch (protocol) {\n case 'http':\n case 'ws':\n return port !== 80;\n\n case 'https':\n case 'wss':\n return port !== 443;\n\n case 'ftp':\n return port !== 21;\n\n case 'gopher':\n return port !== 70;\n\n case 'file':\n return false;\n }\n\n return port !== 0;\n};\n\n\n//# sourceURL=webpack://open-lens/./node_modules/requires-port/index.js?");
28353
-
28354
- /***/ }),
28355
-
28356
28244
  /***/ "./node_modules/resolve-alpn/index.js":
28357
28245
  /*!********************************************!*\
28358
28246
  !*** ./node_modules/resolve-alpn/index.js ***!
@@ -32528,6 +32416,17 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
32528
32416
 
32529
32417
  /***/ }),
32530
32418
 
32419
+ /***/ "./src/common/ipc/native-theme.ts":
32420
+ /*!****************************************!*\
32421
+ !*** ./src/common/ipc/native-theme.ts ***!
32422
+ \****************************************/
32423
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
32424
+
32425
+ "use strict";
32426
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"setNativeThemeChannel\": () => (/* binding */ setNativeThemeChannel),\n/* harmony export */ \"getNativeThemeChannel\": () => (/* binding */ getNativeThemeChannel)\n/* harmony export */ });\n/**\n * Copyright (c) OpenLens Authors. All rights reserved.\n * Licensed under MIT License. See LICENSE in root directory for more information.\n */\nconst setNativeThemeChannel = \"theme:set-native-theme\";\nconst getNativeThemeChannel = \"theme:get-native-theme\";\n\n\n//# sourceURL=webpack://open-lens/./src/common/ipc/native-theme.ts?");
32427
+
32428
+ /***/ }),
32429
+
32531
32430
  /***/ "./src/common/ipc/type-enforced-ipc.ts":
32532
32431
  /*!*********************************************!*\
32533
32432
  !*** ./src/common/ipc/type-enforced-ipc.ts ***!
@@ -32700,7 +32599,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
32700
32599
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
32701
32600
 
32702
32601
  "use strict";
32703
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"listCharts\": () => (/* binding */ listCharts),\n/* harmony export */ \"getChartDetails\": () => (/* binding */ getChartDetails),\n/* harmony export */ \"getChartValues\": () => (/* binding */ getChartValues),\n/* harmony export */ \"HelmChart\": () => (/* binding */ HelmChart)\n/* harmony export */ });\n/* harmony import */ var path_to_regexp__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! path-to-regexp */ \"./node_modules/path-to-regexp/dist.es2015/index.js\");\n/* harmony import */ var _index__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../index */ \"./src/common/k8s-api/index.ts\");\n/* harmony import */ var querystring__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! querystring */ \"querystring\");\n/* harmony import */ var querystring__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(querystring__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../utils */ \"./src/common/utils/index.ts\");\n/* harmony import */ var joi__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! joi */ \"./node_modules/joi/dist/joi-browser.min.js\");\n/* harmony import */ var joi__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(joi__WEBPACK_IMPORTED_MODULE_3__);\n/**\n * Copyright (c) OpenLens Authors. All rights reserved.\n * Licensed under MIT License. See LICENSE in root directory for more information.\n */\n\n\n\n\n\nconst endpoint = (0,path_to_regexp__WEBPACK_IMPORTED_MODULE_4__.compile)(`/v2/charts/:repo?/:name?`);\n/**\n * Get a list of all helm charts from all saved helm repos\n */\nasync function listCharts() {\n const data = await _index__WEBPACK_IMPORTED_MODULE_0__.apiBase.get(endpoint());\n return Object\n .values(data)\n .reduce((allCharts, repoCharts) => allCharts.concat(Object.values(repoCharts)), [])\n .map(([chart]) => HelmChart.create(chart, { onError: \"log\" }))\n .filter(Boolean);\n}\n/**\n * Get the readme and all versions of a chart\n * @param repo The repo to get from\n * @param name The name of the chart to request the data of\n * @param options.version The version of the chart's readme to get, default latest\n * @param options.reqInit A way for passing in an abort controller or other browser request options\n */\nasync function getChartDetails(repo, name, { version, reqInit } = {}) {\n const path = endpoint({ repo, name });\n const { readme, ...data } = await _index__WEBPACK_IMPORTED_MODULE_0__.apiBase.get(`${path}?${(0,querystring__WEBPACK_IMPORTED_MODULE_1__.stringify)({ version })}`, undefined, reqInit);\n const versions = data.versions.map(version => HelmChart.create(version, { onError: \"log\" })).filter(Boolean);\n return {\n readme,\n versions,\n };\n}\n/**\n * Get chart values related to a specific repos' version of a chart\n * @param repo The repo to get from\n * @param name The name of the chart to request the data of\n * @param version The version to get the values from\n */\nasync function getChartValues(repo, name, version) {\n return _index__WEBPACK_IMPORTED_MODULE_0__.apiBase.get(`/v2/charts/${repo}/${name}/values?${(0,querystring__WEBPACK_IMPORTED_MODULE_1__.stringify)({ version })}`);\n}\nconst helmChartMaintainerValidator = joi__WEBPACK_IMPORTED_MODULE_3___default().object({\n name: joi__WEBPACK_IMPORTED_MODULE_3___default().string()\n .required(),\n email: joi__WEBPACK_IMPORTED_MODULE_3___default().string()\n .required(),\n url: joi__WEBPACK_IMPORTED_MODULE_3___default().string()\n .optional(),\n});\nconst helmChartDependencyValidator = joi__WEBPACK_IMPORTED_MODULE_3___default().object({\n name: joi__WEBPACK_IMPORTED_MODULE_3___default().string()\n .required(),\n repository: joi__WEBPACK_IMPORTED_MODULE_3___default().string()\n .required(),\n condition: joi__WEBPACK_IMPORTED_MODULE_3___default().string()\n .optional(),\n version: joi__WEBPACK_IMPORTED_MODULE_3___default().string()\n .required(),\n tags: joi__WEBPACK_IMPORTED_MODULE_3___default().array()\n .items(joi__WEBPACK_IMPORTED_MODULE_3___default().string())\n .default(() => ([])),\n});\nconst helmChartValidator = joi__WEBPACK_IMPORTED_MODULE_3___default().object({\n apiVersion: joi__WEBPACK_IMPORTED_MODULE_3___default().string()\n .required(),\n name: joi__WEBPACK_IMPORTED_MODULE_3___default().string()\n .required(),\n version: joi__WEBPACK_IMPORTED_MODULE_3___default().string()\n .required(),\n repo: joi__WEBPACK_IMPORTED_MODULE_3___default().string()\n .required(),\n created: joi__WEBPACK_IMPORTED_MODULE_3___default().string()\n .required(),\n digest: joi__WEBPACK_IMPORTED_MODULE_3___default().string()\n .required(),\n kubeVersion: joi__WEBPACK_IMPORTED_MODULE_3___default().string()\n .optional(),\n description: joi__WEBPACK_IMPORTED_MODULE_3___default().string()\n .default(\"\"),\n home: joi__WEBPACK_IMPORTED_MODULE_3___default().string()\n .optional(),\n engine: joi__WEBPACK_IMPORTED_MODULE_3___default().string()\n .optional(),\n icon: joi__WEBPACK_IMPORTED_MODULE_3___default().string()\n .optional(),\n appVersion: joi__WEBPACK_IMPORTED_MODULE_3___default().string()\n .optional(),\n tillerVersion: joi__WEBPACK_IMPORTED_MODULE_3___default().string()\n .optional(),\n type: joi__WEBPACK_IMPORTED_MODULE_3___default().string()\n .optional(),\n deprecated: joi__WEBPACK_IMPORTED_MODULE_3___default().boolean()\n .default(false),\n keywords: joi__WEBPACK_IMPORTED_MODULE_3___default().array()\n .items(joi__WEBPACK_IMPORTED_MODULE_3___default().string())\n .options({\n stripUnknown: {\n arrays: true,\n },\n })\n .default(() => ([])),\n sources: joi__WEBPACK_IMPORTED_MODULE_3___default().array()\n .items(joi__WEBPACK_IMPORTED_MODULE_3___default().string())\n .options({\n stripUnknown: {\n arrays: true,\n },\n })\n .default(() => ([])),\n urls: joi__WEBPACK_IMPORTED_MODULE_3___default().array()\n .items(joi__WEBPACK_IMPORTED_MODULE_3___default().string())\n .options({\n stripUnknown: {\n arrays: true,\n },\n })\n .default(() => ([])),\n maintainers: joi__WEBPACK_IMPORTED_MODULE_3___default().array()\n .items(helmChartMaintainerValidator)\n .options({\n stripUnknown: {\n arrays: true,\n },\n })\n .default(() => ([])),\n dependencies: joi__WEBPACK_IMPORTED_MODULE_3___default().array()\n .items(helmChartDependencyValidator)\n .options({\n stripUnknown: {\n arrays: true,\n },\n })\n .default(() => ([])),\n annotations: joi__WEBPACK_IMPORTED_MODULE_3___default().object({})\n .pattern(/.*/, joi__WEBPACK_IMPORTED_MODULE_3___default().string())\n .default(() => ({})),\n});\nclass HelmChart {\n constructor(value) {\n this.apiVersion = value.apiVersion;\n this.name = value.name;\n this.version = value.version;\n this.repo = value.repo;\n this.kubeVersion = value.kubeVersion;\n this.created = value.created;\n this.description = value.description;\n this.digest = value.digest;\n this.keywords = value.keywords;\n this.home = value.home;\n this.sources = value.sources;\n this.maintainers = value.maintainers;\n this.engine = value.engine;\n this.icon = value.icon;\n this.apiVersion = value.apiVersion;\n this.deprecated = value.deprecated;\n this.tillerVersion = value.tillerVersion;\n this.annotations = value.annotations;\n this.urls = value.urls;\n this.dependencies = value.dependencies;\n this.type = value.type;\n (0,_utils__WEBPACK_IMPORTED_MODULE_2__.autoBind)(this);\n }\n static create(data, { onError = \"throw\" } = {}) {\n const { value, error } = helmChartValidator.validate(data, {\n abortEarly: false,\n });\n if (!error) {\n return new HelmChart(value);\n }\n const [actualErrors, unknownDetails] = (0,_utils__WEBPACK_IMPORTED_MODULE_2__.bifurcateArray)(error.details, ({ type }) => type === \"object.unknown\");\n if (unknownDetails.length > 0) {\n console.warn(\"HelmChart data has unexpected fields\", { original: data, unknownFields: unknownDetails.flatMap(d => d.path) });\n }\n if (actualErrors.length === 0) {\n return new HelmChart(value);\n }\n const validationError = new (joi__WEBPACK_IMPORTED_MODULE_3___default().ValidationError)(actualErrors.map(er => er.message).join(\". \"), actualErrors, error._original);\n if (onError === \"throw\") {\n throw validationError;\n }\n console.warn(\"[HELM-CHART]: failed to validate data\", data, validationError);\n return undefined;\n }\n getId() {\n return `${this.repo}:${this.apiVersion}/${this.name}@${this.getAppVersion()}+${this.digest}`;\n }\n getName() {\n return this.name;\n }\n getFullName(seperator = \"/\") {\n return [this.getRepository(), this.getName()].join(seperator);\n }\n getDescription() {\n return this.description;\n }\n getIcon() {\n return this.icon;\n }\n getHome() {\n return this.home;\n }\n getMaintainers() {\n return this.maintainers;\n }\n getVersion() {\n return this.version;\n }\n getRepository() {\n return this.repo;\n }\n getAppVersion() {\n return this.appVersion;\n }\n getKeywords() {\n return this.keywords;\n }\n}\n\n\n//# sourceURL=webpack://open-lens/./src/common/k8s-api/endpoints/helm-charts.api.ts?");
32602
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"listCharts\": () => (/* binding */ listCharts),\n/* harmony export */ \"getChartDetails\": () => (/* binding */ getChartDetails),\n/* harmony export */ \"getChartValues\": () => (/* binding */ getChartValues),\n/* harmony export */ \"HelmChart\": () => (/* binding */ HelmChart)\n/* harmony export */ });\n/* harmony import */ var path_to_regexp__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! path-to-regexp */ \"./node_modules/path-to-regexp/dist.es2015/index.js\");\n/* harmony import */ var _index__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../index */ \"./src/common/k8s-api/index.ts\");\n/* harmony import */ var querystring__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! querystring */ \"querystring\");\n/* harmony import */ var querystring__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(querystring__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../utils */ \"./src/common/utils/index.ts\");\n/* harmony import */ var joi__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! joi */ \"./node_modules/joi/dist/joi-browser.min.js\");\n/* harmony import */ var joi__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(joi__WEBPACK_IMPORTED_MODULE_3__);\n/**\n * Copyright (c) OpenLens Authors. All rights reserved.\n * Licensed under MIT License. See LICENSE in root directory for more information.\n */\n\n\n\n\n\nconst endpoint = (0,path_to_regexp__WEBPACK_IMPORTED_MODULE_4__.compile)(`/v2/charts/:repo?/:name?`);\n/**\n * Get a list of all helm charts from all saved helm repos\n */\nasync function listCharts() {\n const data = await _index__WEBPACK_IMPORTED_MODULE_0__.apiBase.get(endpoint());\n return Object\n .values(data)\n .reduce((allCharts, repoCharts) => allCharts.concat(Object.values(repoCharts)), [])\n .map(([chart]) => HelmChart.create(chart, { onError: \"log\" }))\n .filter(Boolean);\n}\n/**\n * Get the readme and all versions of a chart\n * @param repo The repo to get from\n * @param name The name of the chart to request the data of\n * @param options.version The version of the chart's readme to get, default latest\n * @param options.reqInit A way for passing in an abort controller or other browser request options\n */\nasync function getChartDetails(repo, name, { version, reqInit } = {}) {\n const path = endpoint({ repo, name });\n const { readme, ...data } = await _index__WEBPACK_IMPORTED_MODULE_0__.apiBase.get(`${path}?${(0,querystring__WEBPACK_IMPORTED_MODULE_1__.stringify)({ version })}`, undefined, reqInit);\n const versions = data.versions.map(version => HelmChart.create(version, { onError: \"log\" })).filter(Boolean);\n return {\n readme,\n versions,\n };\n}\n/**\n * Get chart values related to a specific repos' version of a chart\n * @param repo The repo to get from\n * @param name The name of the chart to request the data of\n * @param version The version to get the values from\n */\nasync function getChartValues(repo, name, version) {\n return _index__WEBPACK_IMPORTED_MODULE_0__.apiBase.get(`/v2/charts/${repo}/${name}/values?${(0,querystring__WEBPACK_IMPORTED_MODULE_1__.stringify)({ version })}`);\n}\nconst helmChartMaintainerValidator = joi__WEBPACK_IMPORTED_MODULE_3___default().object({\n name: joi__WEBPACK_IMPORTED_MODULE_3___default().string()\n .required(),\n email: joi__WEBPACK_IMPORTED_MODULE_3___default().string()\n .required(),\n url: joi__WEBPACK_IMPORTED_MODULE_3___default().string()\n .optional(),\n});\nconst helmChartDependencyValidator = joi__WEBPACK_IMPORTED_MODULE_3___default().object({\n name: joi__WEBPACK_IMPORTED_MODULE_3___default().string()\n .required(),\n repository: joi__WEBPACK_IMPORTED_MODULE_3___default().string()\n .required(),\n condition: joi__WEBPACK_IMPORTED_MODULE_3___default().string()\n .optional(),\n version: joi__WEBPACK_IMPORTED_MODULE_3___default().string()\n .required(),\n tags: joi__WEBPACK_IMPORTED_MODULE_3___default().array()\n .items(joi__WEBPACK_IMPORTED_MODULE_3___default().string())\n .default(() => ([])),\n});\nconst helmChartValidator = joi__WEBPACK_IMPORTED_MODULE_3___default().object({\n apiVersion: joi__WEBPACK_IMPORTED_MODULE_3___default().string()\n .required(),\n name: joi__WEBPACK_IMPORTED_MODULE_3___default().string()\n .required(),\n version: joi__WEBPACK_IMPORTED_MODULE_3___default().string()\n .required(),\n repo: joi__WEBPACK_IMPORTED_MODULE_3___default().string()\n .required(),\n created: joi__WEBPACK_IMPORTED_MODULE_3___default().string()\n .required(),\n digest: joi__WEBPACK_IMPORTED_MODULE_3___default().string()\n .optional(),\n kubeVersion: joi__WEBPACK_IMPORTED_MODULE_3___default().string()\n .optional(),\n description: joi__WEBPACK_IMPORTED_MODULE_3___default().string()\n .default(\"\"),\n home: joi__WEBPACK_IMPORTED_MODULE_3___default().string()\n .optional(),\n engine: joi__WEBPACK_IMPORTED_MODULE_3___default().string()\n .optional(),\n icon: joi__WEBPACK_IMPORTED_MODULE_3___default().string()\n .optional(),\n appVersion: joi__WEBPACK_IMPORTED_MODULE_3___default().string()\n .optional(),\n tillerVersion: joi__WEBPACK_IMPORTED_MODULE_3___default().string()\n .optional(),\n type: joi__WEBPACK_IMPORTED_MODULE_3___default().string()\n .optional(),\n deprecated: joi__WEBPACK_IMPORTED_MODULE_3___default().boolean()\n .default(false),\n keywords: joi__WEBPACK_IMPORTED_MODULE_3___default().array()\n .items(joi__WEBPACK_IMPORTED_MODULE_3___default().string())\n .options({\n stripUnknown: {\n arrays: true,\n },\n })\n .default(() => ([])),\n sources: joi__WEBPACK_IMPORTED_MODULE_3___default().array()\n .items(joi__WEBPACK_IMPORTED_MODULE_3___default().string())\n .options({\n stripUnknown: {\n arrays: true,\n },\n })\n .default(() => ([])),\n urls: joi__WEBPACK_IMPORTED_MODULE_3___default().array()\n .items(joi__WEBPACK_IMPORTED_MODULE_3___default().string())\n .options({\n stripUnknown: {\n arrays: true,\n },\n })\n .default(() => ([])),\n maintainers: joi__WEBPACK_IMPORTED_MODULE_3___default().array()\n .items(helmChartMaintainerValidator)\n .options({\n stripUnknown: {\n arrays: true,\n },\n })\n .default(() => ([])),\n dependencies: joi__WEBPACK_IMPORTED_MODULE_3___default().array()\n .items(helmChartDependencyValidator)\n .options({\n stripUnknown: {\n arrays: true,\n },\n })\n .default(() => ([])),\n annotations: joi__WEBPACK_IMPORTED_MODULE_3___default().object({})\n .pattern(/.*/, joi__WEBPACK_IMPORTED_MODULE_3___default().string())\n .default(() => ({})),\n});\nclass HelmChart {\n constructor(value) {\n this.apiVersion = value.apiVersion;\n this.name = value.name;\n this.version = value.version;\n this.repo = value.repo;\n this.kubeVersion = value.kubeVersion;\n this.created = value.created;\n this.description = value.description;\n this.digest = value.digest;\n this.keywords = value.keywords;\n this.home = value.home;\n this.sources = value.sources;\n this.maintainers = value.maintainers;\n this.engine = value.engine;\n this.icon = value.icon;\n this.apiVersion = value.apiVersion;\n this.deprecated = value.deprecated;\n this.tillerVersion = value.tillerVersion;\n this.annotations = value.annotations;\n this.urls = value.urls;\n this.dependencies = value.dependencies;\n this.type = value.type;\n (0,_utils__WEBPACK_IMPORTED_MODULE_2__.autoBind)(this);\n }\n static create(data, { onError = \"throw\" } = {}) {\n const { value, error } = helmChartValidator.validate(data, {\n abortEarly: false,\n });\n if (!error) {\n return new HelmChart(value);\n }\n const [actualErrors, unknownDetails] = (0,_utils__WEBPACK_IMPORTED_MODULE_2__.bifurcateArray)(error.details, ({ type }) => type === \"object.unknown\");\n if (unknownDetails.length > 0) {\n console.warn(\"HelmChart data has unexpected fields\", { original: data, unknownFields: unknownDetails.flatMap(d => d.path) });\n }\n if (actualErrors.length === 0) {\n return new HelmChart(value);\n }\n const validationError = new (joi__WEBPACK_IMPORTED_MODULE_3___default().ValidationError)(actualErrors.map(er => er.message).join(\". \"), actualErrors, error._original);\n if (onError === \"throw\") {\n throw validationError;\n }\n console.warn(\"[HELM-CHART]: failed to validate data\", data, validationError);\n return undefined;\n }\n getId() {\n const digestPart = this.digest\n ? `+${this.digest}`\n : \"\";\n return `${this.repo}:${this.apiVersion}/${this.name}@${this.getAppVersion()}${digestPart}`;\n }\n getName() {\n return this.name;\n }\n getFullName(seperator = \"/\") {\n return [this.getRepository(), this.getName()].join(seperator);\n }\n getDescription() {\n return this.description;\n }\n getIcon() {\n return this.icon;\n }\n getHome() {\n return this.home;\n }\n getMaintainers() {\n return this.maintainers;\n }\n getVersion() {\n return this.version;\n }\n getRepository() {\n return this.repo;\n }\n getAppVersion() {\n return this.appVersion;\n }\n getKeywords() {\n return this.keywords;\n }\n}\n\n\n//# sourceURL=webpack://open-lens/./src/common/k8s-api/endpoints/helm-charts.api.ts?");
32704
32603
 
32705
32604
  /***/ }),
32706
32605
 
@@ -33815,6 +33714,17 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
33815
33714
 
33816
33715
  /***/ }),
33817
33716
 
33717
+ /***/ "./src/common/utils/lazy-initialized.ts":
33718
+ /*!**********************************************!*\
33719
+ !*** ./src/common/utils/lazy-initialized.ts ***!
33720
+ \**********************************************/
33721
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
33722
+
33723
+ "use strict";
33724
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"lazyInitialized\": () => (/* binding */ lazyInitialized)\n/* harmony export */ });\n/**\n * Copyright (c) OpenLens Authors. All rights reserved.\n * Licensed under MIT License. See LICENSE in root directory for more information.\n */\n/**\n * A function to make a `OnceCell<T>`\n */\nfunction lazyInitialized(builder) {\n let value;\n let called = false;\n return {\n get() {\n if (called) {\n return value;\n }\n value = builder();\n called = true;\n return value;\n },\n };\n}\n\n\n//# sourceURL=webpack://open-lens/./src/common/utils/lazy-initialized.ts?");
33725
+
33726
+ /***/ }),
33727
+
33818
33728
  /***/ "./src/common/utils/n-fircate.ts":
33819
33729
  /*!***************************************!*\
33820
33730
  !*** ./src/common/utils/n-fircate.ts ***!
@@ -33976,7 +33886,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
33976
33886
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
33977
33887
 
33978
33888
  "use strict";
33979
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"isMac\": () => (/* binding */ isMac),\n/* harmony export */ \"isWindows\": () => (/* binding */ isWindows),\n/* harmony export */ \"isLinux\": () => (/* binding */ isLinux),\n/* harmony export */ \"isDebugging\": () => (/* binding */ isDebugging),\n/* harmony export */ \"isSnap\": () => (/* binding */ isSnap),\n/* harmony export */ \"isProduction\": () => (/* binding */ isProduction),\n/* harmony export */ \"isTestEnv\": () => (/* binding */ isTestEnv),\n/* harmony export */ \"isDevelopment\": () => (/* binding */ isDevelopment),\n/* harmony export */ \"isPublishConfigured\": () => (/* binding */ isPublishConfigured),\n/* harmony export */ \"integrationTestingArg\": () => (/* binding */ integrationTestingArg),\n/* harmony export */ \"isIntegrationTesting\": () => (/* binding */ isIntegrationTesting),\n/* harmony export */ \"productName\": () => (/* binding */ productName),\n/* harmony export */ \"appName\": () => (/* binding */ appName),\n/* harmony export */ \"publicPath\": () => (/* binding */ publicPath),\n/* harmony export */ \"defaultTheme\": () => (/* binding */ defaultTheme),\n/* harmony export */ \"defaultFontSize\": () => (/* binding */ defaultFontSize),\n/* harmony export */ \"defaultTerminalFontFamily\": () => (/* binding */ defaultTerminalFontFamily),\n/* harmony export */ \"defaultEditorFontFamily\": () => (/* binding */ defaultEditorFontFamily),\n/* harmony export */ \"contextDir\": () => (/* binding */ contextDir),\n/* harmony export */ \"buildDir\": () => (/* binding */ buildDir),\n/* harmony export */ \"preloadEntrypoint\": () => (/* binding */ preloadEntrypoint),\n/* harmony export */ \"mainDir\": () => (/* binding */ mainDir),\n/* harmony export */ \"rendererDir\": () => (/* binding */ rendererDir),\n/* harmony export */ \"htmlTemplate\": () => (/* binding */ htmlTemplate),\n/* harmony export */ \"sassCommonVars\": () => (/* binding */ sassCommonVars),\n/* harmony export */ \"apiPrefix\": () => (/* binding */ apiPrefix),\n/* harmony export */ \"apiKubePrefix\": () => (/* binding */ apiKubePrefix),\n/* harmony export */ \"issuesTrackerUrl\": () => (/* binding */ issuesTrackerUrl),\n/* harmony export */ \"slackUrl\": () => (/* binding */ slackUrl),\n/* harmony export */ \"supportUrl\": () => (/* binding */ supportUrl),\n/* harmony export */ \"appSemVer\": () => (/* binding */ appSemVer),\n/* harmony export */ \"docsUrl\": () => (/* binding */ docsUrl),\n/* harmony export */ \"sentryDsn\": () => (/* binding */ sentryDsn)\n/* harmony export */ });\n/* harmony import */ var path__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! path */ \"path\");\n/* harmony import */ var path__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(path__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var semver__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! semver */ \"./node_modules/semver/index.js\");\n/* harmony import */ var semver__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(semver__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _package_json__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../package.json */ \"./package.json\");\n/* harmony import */ var _utils_defineGlobal__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./utils/defineGlobal */ \"./src/common/utils/defineGlobal.ts\");\n/**\n * Copyright (c) OpenLens Authors. All rights reserved.\n * Licensed under MIT License. See LICENSE in root directory for more information.\n */\nvar _a, _b, _c;\n// App's common configuration for any process (main, renderer, build pipeline, etc.)\n\n\n\n\nconst isMac = process.platform === \"darwin\";\nconst isWindows = process.platform === \"win32\";\nconst isLinux = process.platform === \"linux\";\nconst isDebugging = [\"true\", \"1\", \"yes\", \"y\", \"on\"].includes(((_a = process.env.DEBUG) !== null && _a !== void 0 ? _a : \"\").toLowerCase());\nconst isSnap = !!process.env.SNAP;\nconst isProduction = \"development\" === \"production\";\nconst isTestEnv = !!process.env.JEST_WORKER_ID;\nconst isDevelopment = !isTestEnv && !isProduction;\nconst isPublishConfigured = Object.keys(_package_json__WEBPACK_IMPORTED_MODULE_2__.build).includes(\"publish\");\nconst integrationTestingArg = \"--integration-testing\";\nconst isIntegrationTesting = process.argv.includes(integrationTestingArg);\nconst productName = _package_json__WEBPACK_IMPORTED_MODULE_2__.productName;\nconst appName = `${_package_json__WEBPACK_IMPORTED_MODULE_2__.productName}${isDevelopment ? \"Dev\" : \"\"}`;\nconst publicPath = \"/build/\";\nconst defaultTheme = \"lens-dark\";\nconst defaultFontSize = 12;\nconst defaultTerminalFontFamily = \"RobotoMono\";\nconst defaultEditorFontFamily = \"RobotoMono\";\n// Webpack build paths\nconst contextDir = process.cwd();\nconst buildDir = path__WEBPACK_IMPORTED_MODULE_0___default().join(contextDir, \"static\", publicPath);\nconst preloadEntrypoint = path__WEBPACK_IMPORTED_MODULE_0___default().join(contextDir, \"src/preload.ts\");\nconst mainDir = path__WEBPACK_IMPORTED_MODULE_0___default().join(contextDir, \"src/main\");\nconst rendererDir = path__WEBPACK_IMPORTED_MODULE_0___default().join(contextDir, \"src/renderer\");\nconst htmlTemplate = path__WEBPACK_IMPORTED_MODULE_0___default().resolve(rendererDir, \"template.html\");\nconst sassCommonVars = path__WEBPACK_IMPORTED_MODULE_0___default().resolve(rendererDir, \"components/vars.scss\");\n// Special runtime paths\n(0,_utils_defineGlobal__WEBPACK_IMPORTED_MODULE_3__.defineGlobal)(\"__static\", {\n get() {\n var _a;\n const root = isDevelopment\n ? contextDir\n : ((_a = process.resourcesPath) !== null && _a !== void 0 ? _a : contextDir);\n return path__WEBPACK_IMPORTED_MODULE_0___default().resolve(root, \"static\");\n },\n});\n// Apis\nconst apiPrefix = \"/api\"; // local router apis\nconst apiKubePrefix = \"/api-kube\"; // k8s cluster apis\n// Links\nconst issuesTrackerUrl = \"https://github.com/lensapp/lens/issues\";\nconst slackUrl = \"https://join.slack.com/t/k8slens/shared_invite/zt-wcl8jq3k-68R5Wcmk1o95MLBE5igUDQ\";\nconst supportUrl = \"https://docs.k8slens.dev/latest/support/\";\nconst appSemVer = new semver__WEBPACK_IMPORTED_MODULE_1__.SemVer(_package_json__WEBPACK_IMPORTED_MODULE_2__.version);\nconst docsUrl = \"https://docs.k8slens.dev/main/\";\nconst sentryDsn = (_c = (_b = _package_json__WEBPACK_IMPORTED_MODULE_2__.config) === null || _b === void 0 ? void 0 : _b.sentryDsn) !== null && _c !== void 0 ? _c : \"\";\n\n\n//# sourceURL=webpack://open-lens/./src/common/vars.ts?");
33889
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"isMac\": () => (/* binding */ isMac),\n/* harmony export */ \"isWindows\": () => (/* binding */ isWindows),\n/* harmony export */ \"isLinux\": () => (/* binding */ isLinux),\n/* harmony export */ \"isDebugging\": () => (/* binding */ isDebugging),\n/* harmony export */ \"isSnap\": () => (/* binding */ isSnap),\n/* harmony export */ \"isProduction\": () => (/* binding */ isProduction),\n/* harmony export */ \"isTestEnv\": () => (/* binding */ isTestEnv),\n/* harmony export */ \"isDevelopment\": () => (/* binding */ isDevelopment),\n/* harmony export */ \"isPublishConfigured\": () => (/* binding */ isPublishConfigured),\n/* harmony export */ \"integrationTestingArg\": () => (/* binding */ integrationTestingArg),\n/* harmony export */ \"isIntegrationTesting\": () => (/* binding */ isIntegrationTesting),\n/* harmony export */ \"productName\": () => (/* binding */ productName),\n/* harmony export */ \"appName\": () => (/* binding */ appName),\n/* harmony export */ \"publicPath\": () => (/* binding */ publicPath),\n/* harmony export */ \"defaultTheme\": () => (/* binding */ defaultTheme),\n/* harmony export */ \"defaultFontSize\": () => (/* binding */ defaultFontSize),\n/* harmony export */ \"defaultTerminalFontFamily\": () => (/* binding */ defaultTerminalFontFamily),\n/* harmony export */ \"defaultEditorFontFamily\": () => (/* binding */ defaultEditorFontFamily),\n/* harmony export */ \"normalizedPlatform\": () => (/* binding */ normalizedPlatform),\n/* harmony export */ \"normalizedArch\": () => (/* binding */ normalizedArch),\n/* harmony export */ \"getBinaryName\": () => (/* binding */ getBinaryName),\n/* harmony export */ \"baseBinariesDir\": () => (/* binding */ baseBinariesDir),\n/* harmony export */ \"kubeAuthProxyBinaryName\": () => (/* binding */ kubeAuthProxyBinaryName),\n/* harmony export */ \"helmBinaryName\": () => (/* binding */ helmBinaryName),\n/* harmony export */ \"helmBinaryPath\": () => (/* binding */ helmBinaryPath),\n/* harmony export */ \"kubectlBinaryName\": () => (/* binding */ kubectlBinaryName),\n/* harmony export */ \"kubectlBinaryPath\": () => (/* binding */ kubectlBinaryPath),\n/* harmony export */ \"contextDir\": () => (/* binding */ contextDir),\n/* harmony export */ \"buildDir\": () => (/* binding */ buildDir),\n/* harmony export */ \"preloadEntrypoint\": () => (/* binding */ preloadEntrypoint),\n/* harmony export */ \"mainDir\": () => (/* binding */ mainDir),\n/* harmony export */ \"rendererDir\": () => (/* binding */ rendererDir),\n/* harmony export */ \"htmlTemplate\": () => (/* binding */ htmlTemplate),\n/* harmony export */ \"sassCommonVars\": () => (/* binding */ sassCommonVars),\n/* harmony export */ \"apiPrefix\": () => (/* binding */ apiPrefix),\n/* harmony export */ \"apiKubePrefix\": () => (/* binding */ apiKubePrefix),\n/* harmony export */ \"issuesTrackerUrl\": () => (/* binding */ issuesTrackerUrl),\n/* harmony export */ \"slackUrl\": () => (/* binding */ slackUrl),\n/* harmony export */ \"supportUrl\": () => (/* binding */ supportUrl),\n/* harmony export */ \"appSemVer\": () => (/* binding */ appSemVer),\n/* harmony export */ \"docsUrl\": () => (/* binding */ docsUrl),\n/* harmony export */ \"sentryDsn\": () => (/* binding */ sentryDsn)\n/* harmony export */ });\n/* harmony import */ var path__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! path */ \"path\");\n/* harmony import */ var path__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(path__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var semver__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! semver */ \"./node_modules/semver/index.js\");\n/* harmony import */ var semver__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(semver__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _package_json__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../package.json */ \"./package.json\");\n/* harmony import */ var _utils_defineGlobal__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./utils/defineGlobal */ \"./src/common/utils/defineGlobal.ts\");\n/* harmony import */ var _utils_lazy_initialized__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./utils/lazy-initialized */ \"./src/common/utils/lazy-initialized.ts\");\n/**\n * Copyright (c) OpenLens Authors. All rights reserved.\n * Licensed under MIT License. See LICENSE in root directory for more information.\n */\nvar _a, _b, _c;\n// App's common configuration for any process (main, renderer, build pipeline, etc.)\n\n\n\n\n\nconst isMac = process.platform === \"darwin\";\nconst isWindows = process.platform === \"win32\";\nconst isLinux = process.platform === \"linux\";\nconst isDebugging = [\"true\", \"1\", \"yes\", \"y\", \"on\"].includes(((_a = process.env.DEBUG) !== null && _a !== void 0 ? _a : \"\").toLowerCase());\nconst isSnap = !!process.env.SNAP;\nconst isProduction = \"development\" === \"production\";\nconst isTestEnv = !!process.env.JEST_WORKER_ID;\nconst isDevelopment = !isTestEnv && !isProduction;\nconst isPublishConfigured = Object.keys(_package_json__WEBPACK_IMPORTED_MODULE_2__.build).includes(\"publish\");\nconst integrationTestingArg = \"--integration-testing\";\nconst isIntegrationTesting = process.argv.includes(integrationTestingArg);\nconst productName = _package_json__WEBPACK_IMPORTED_MODULE_2__.productName;\nconst appName = `${_package_json__WEBPACK_IMPORTED_MODULE_2__.productName}${isDevelopment ? \"Dev\" : \"\"}`;\nconst publicPath = \"/build/\";\nconst defaultTheme = \"lens-dark\";\nconst defaultFontSize = 12;\nconst defaultTerminalFontFamily = \"RobotoMono\";\nconst defaultEditorFontFamily = \"RobotoMono\";\nconst normalizedPlatform = (() => {\n switch (process.platform) {\n case \"darwin\":\n return \"darwin\";\n case \"linux\":\n return \"linux\";\n case \"win32\":\n return \"windows\";\n default:\n throw new Error(`platform=${process.platform} is unsupported`);\n }\n})();\nconst normalizedArch = (() => {\n switch (process.arch) {\n case \"arm64\":\n return \"arm64\";\n case \"x64\":\n case \"amd64\":\n return \"x64\";\n case \"386\":\n case \"x32\":\n case \"ia32\":\n return \"ia32\";\n default:\n throw new Error(`arch=${process.arch} is unsupported`);\n }\n})();\nfunction getBinaryName(name, { forPlatform = normalizedPlatform } = {}) {\n if (forPlatform === \"windows\") {\n return `${name}.exe`;\n }\n return name;\n}\nconst resourcesDir = (0,_utils_lazy_initialized__WEBPACK_IMPORTED_MODULE_4__.lazyInitialized)(() => (isProduction\n ? process.resourcesPath\n : path__WEBPACK_IMPORTED_MODULE_0___default().join(process.cwd(), \"binaries\", \"client\", normalizedPlatform)));\nconst baseBinariesDir = (0,_utils_lazy_initialized__WEBPACK_IMPORTED_MODULE_4__.lazyInitialized)(() => path__WEBPACK_IMPORTED_MODULE_0___default().join(resourcesDir.get(), normalizedArch));\nconst kubeAuthProxyBinaryName = getBinaryName(\"lens-k8s-proxy\");\nconst helmBinaryName = getBinaryName(\"helm\");\nconst helmBinaryPath = (0,_utils_lazy_initialized__WEBPACK_IMPORTED_MODULE_4__.lazyInitialized)(() => path__WEBPACK_IMPORTED_MODULE_0___default().join(baseBinariesDir.get(), helmBinaryName));\nconst kubectlBinaryName = getBinaryName(\"kubectl\");\nconst kubectlBinaryPath = (0,_utils_lazy_initialized__WEBPACK_IMPORTED_MODULE_4__.lazyInitialized)(() => path__WEBPACK_IMPORTED_MODULE_0___default().join(baseBinariesDir.get(), kubectlBinaryName));\n// Webpack build paths\nconst contextDir = process.cwd();\nconst buildDir = path__WEBPACK_IMPORTED_MODULE_0___default().join(contextDir, \"static\", publicPath);\nconst preloadEntrypoint = path__WEBPACK_IMPORTED_MODULE_0___default().join(contextDir, \"src/preload.ts\");\nconst mainDir = path__WEBPACK_IMPORTED_MODULE_0___default().join(contextDir, \"src/main\");\nconst rendererDir = path__WEBPACK_IMPORTED_MODULE_0___default().join(contextDir, \"src/renderer\");\nconst htmlTemplate = path__WEBPACK_IMPORTED_MODULE_0___default().resolve(rendererDir, \"template.html\");\nconst sassCommonVars = path__WEBPACK_IMPORTED_MODULE_0___default().resolve(rendererDir, \"components/vars.scss\");\n// Special runtime paths\n(0,_utils_defineGlobal__WEBPACK_IMPORTED_MODULE_3__.defineGlobal)(\"__static\", {\n get() {\n var _a;\n const root = isDevelopment\n ? contextDir\n : ((_a = process.resourcesPath) !== null && _a !== void 0 ? _a : contextDir);\n return path__WEBPACK_IMPORTED_MODULE_0___default().resolve(root, \"static\");\n },\n});\n// Apis\nconst apiPrefix = \"/api\"; // local router apis\nconst apiKubePrefix = \"/api-kube\"; // k8s cluster apis\n// Links\nconst issuesTrackerUrl = \"https://github.com/lensapp/lens/issues\";\nconst slackUrl = \"https://join.slack.com/t/k8slens/shared_invite/zt-wcl8jq3k-68R5Wcmk1o95MLBE5igUDQ\";\nconst supportUrl = \"https://docs.k8slens.dev/latest/support/\";\nconst appSemVer = new semver__WEBPACK_IMPORTED_MODULE_1__.SemVer(_package_json__WEBPACK_IMPORTED_MODULE_2__.version);\nconst docsUrl = \"https://docs.k8slens.dev/main/\";\nconst sentryDsn = (_c = (_b = _package_json__WEBPACK_IMPORTED_MODULE_2__.config) === null || _b === void 0 ? void 0 : _b.sentryDsn) !== null && _c !== void 0 ? _c : \"\";\n\n\n//# sourceURL=webpack://open-lens/./src/common/vars.ts?");
33980
33890
 
33981
33891
  /***/ }),
33982
33892
 
@@ -34229,7 +34139,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
34229
34139
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
34230
34140
 
34231
34141
  "use strict";
34232
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"ExtensionLoader\": () => (/* binding */ ExtensionLoader)\n/* harmony export */ });\n/* harmony import */ var electron__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! electron */ \"electron\");\n/* harmony import */ var electron__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(electron__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var events__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! events */ \"events\");\n/* harmony import */ var events__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(events__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var lodash__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! lodash */ \"./node_modules/lodash/lodash.js\");\n/* harmony import */ var lodash__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(lodash__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var mobx__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! mobx */ \"./node_modules/mobx/dist/mobx.esm.js\");\n/* harmony import */ var path__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! path */ \"path\");\n/* harmony import */ var path__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(path__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _common_ipc__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../common/ipc */ \"./src/common/ipc/index.ts\");\n/* harmony import */ var _common_utils__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../common/utils */ \"./src/common/utils/index.ts\");\n/* harmony import */ var _main_logger__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../main/logger */ \"./src/main/logger.ts\");\n/* harmony import */ var _registries__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../registries */ \"./src/extensions/registries/index.ts\");\n/* harmony import */ var _common_ipc_extension_handling__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../common/ipc/extension-handling */ \"./src/common/ipc/extension-handling.ts\");\n/* harmony import */ var _renderer_ipc__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../renderer/ipc */ \"./src/renderer/ipc/index.ts\");\n/**\n * Copyright (c) OpenLens Authors. All rights reserved.\n * Licensed under MIT License. See LICENSE in root directory for more information.\n */\nvar __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n 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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (undefined && undefined.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\n\n\n\n\n\n\n\n\n\n\n\nconst logModule = \"[EXTENSIONS-LOADER]\";\n/**\n * Loads installed extensions to the Lens application\n */\nclass ExtensionLoader {\n constructor(dependencies) {\n Object.defineProperty(this, \"dependencies\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: dependencies\n });\n Object.defineProperty(this, \"extensions\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: mobx__WEBPACK_IMPORTED_MODULE_10__.observable.map()\n });\n Object.defineProperty(this, \"instances\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: mobx__WEBPACK_IMPORTED_MODULE_10__.observable.map()\n });\n /**\n * This is the set of extensions that don't come with either\n * - Main.LensExtension when running in the main process\n * - Renderer.LensExtension when running in the renderer process\n */\n Object.defineProperty(this, \"nonInstancesByName\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: mobx__WEBPACK_IMPORTED_MODULE_10__.observable.set()\n });\n /**\n * This is updated by the `observe` in the constructor. DO NOT write directly to it\n */\n Object.defineProperty(this, \"instancesByName\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: mobx__WEBPACK_IMPORTED_MODULE_10__.observable.map()\n });\n // emits event \"remove\" of type LensExtension when the extension is removed\n Object.defineProperty(this, \"events\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: new events__WEBPACK_IMPORTED_MODULE_1__.EventEmitter()\n });\n Object.defineProperty(this, \"isLoaded\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: false\n });\n Object.defineProperty(this, \"loadOnClusterManagerRenderer\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: () => {\n _main_logger__WEBPACK_IMPORTED_MODULE_6__[\"default\"].debug(`${logModule}: load on main renderer (cluster manager)`);\n return this.autoInitExtensions(async (extension) => {\n const removeItems = [\n _registries__WEBPACK_IMPORTED_MODULE_7__.GlobalPageRegistry.getInstance().add(extension.globalPages, extension),\n _registries__WEBPACK_IMPORTED_MODULE_7__.EntitySettingRegistry.getInstance().add(extension.entitySettings),\n _registries__WEBPACK_IMPORTED_MODULE_7__.CatalogEntityDetailRegistry.getInstance().add(extension.catalogEntityDetailItems),\n ];\n this.events.on(\"remove\", (removedExtension) => {\n if (removedExtension.id === extension.id) {\n removeItems.forEach(remove => {\n remove();\n });\n }\n });\n return removeItems;\n });\n }\n });\n Object.defineProperty(this, \"loadOnClusterRenderer\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: (getCluster) => {\n _main_logger__WEBPACK_IMPORTED_MODULE_6__[\"default\"].debug(`${logModule}: load on cluster renderer (dashboard)`);\n this.autoInitExtensions(async (extension) => {\n // getCluster must be a callback, as the entity might be available only after an extension has been loaded\n if ((await extension.isEnabledForCluster(getCluster())) === false) {\n return [];\n }\n const removeItems = [\n _registries__WEBPACK_IMPORTED_MODULE_7__.ClusterPageRegistry.getInstance().add(extension.clusterPages, extension),\n _registries__WEBPACK_IMPORTED_MODULE_7__.ClusterPageMenuRegistry.getInstance().add(extension.clusterPageMenus, extension),\n _registries__WEBPACK_IMPORTED_MODULE_7__.KubeObjectDetailRegistry.getInstance().add(extension.kubeObjectDetailItems),\n _registries__WEBPACK_IMPORTED_MODULE_7__.KubeObjectStatusRegistry.getInstance().add(extension.kubeObjectStatusTexts),\n _registries__WEBPACK_IMPORTED_MODULE_7__.WorkloadsOverviewDetailRegistry.getInstance().add(extension.kubeWorkloadsOverviewItems),\n ];\n this.events.on(\"remove\", (removedExtension) => {\n if (removedExtension.id === extension.id) {\n removeItems.forEach(remove => {\n remove();\n });\n }\n });\n return removeItems;\n });\n }\n });\n (0,mobx__WEBPACK_IMPORTED_MODULE_10__.makeObservable)(this);\n (0,mobx__WEBPACK_IMPORTED_MODULE_10__.observe)(this.instances, change => {\n switch (change.type) {\n case \"add\":\n if (this.instancesByName.has(change.newValue.name)) {\n throw new TypeError(\"Extension names must be unique\");\n }\n this.instancesByName.set(change.newValue.name, change.newValue);\n break;\n case \"delete\":\n this.instancesByName.delete(change.oldValue.name);\n break;\n case \"update\":\n throw new Error(\"Extension instances shouldn't be updated\");\n }\n });\n }\n get whenLoaded() {\n return (0,mobx__WEBPACK_IMPORTED_MODULE_10__.when)(() => this.isLoaded);\n }\n get enabledExtensionInstances() {\n return [...this.instances.values()].filter(extension => extension.isEnabled);\n }\n get userExtensions() {\n const extensions = this.toJSON();\n extensions.forEach((ext, extId) => {\n if (ext.isBundled) {\n extensions.delete(extId);\n }\n });\n return extensions;\n }\n /**\n * Get the extension instance by its manifest name\n * @param name The name of the extension\n * @returns one of the following:\n * - the instance of `Main.LensExtension` on the main process if created\n * - the instance of `Renderer.LensExtension` on the renderer process if created\n * - `null` if no class definition is provided for the current process\n * - `undefined` if the name is not known about\n */\n getInstanceByName(name) {\n if (this.nonInstancesByName.has(name)) {\n return null;\n }\n return this.instancesByName.get(name);\n }\n // Transform userExtensions to a state object for storing into ExtensionsStore\n get storeState() {\n return Object.fromEntries(Array.from(this.userExtensions)\n .map(([extId, extension]) => [extId, {\n enabled: extension.isEnabled,\n name: extension.manifest.name,\n }]));\n }\n async init() {\n if (electron__WEBPACK_IMPORTED_MODULE_0__.ipcRenderer) {\n await this.initRenderer();\n }\n else {\n await this.initMain();\n }\n await Promise.all([this.whenLoaded]);\n // broadcasting extensions between main/renderer processes\n (0,mobx__WEBPACK_IMPORTED_MODULE_10__.reaction)(() => this.toJSON(), () => this.broadcastExtensions(), {\n fireImmediately: true,\n });\n (0,mobx__WEBPACK_IMPORTED_MODULE_10__.reaction)(() => this.storeState, (state) => {\n this.dependencies.updateExtensionsState(state);\n });\n }\n initExtensions(extensions) {\n this.extensions.replace(extensions);\n }\n addExtension(extension) {\n this.extensions.set(extension.id, extension);\n }\n removeInstance(lensExtensionId) {\n _main_logger__WEBPACK_IMPORTED_MODULE_6__[\"default\"].info(`${logModule} deleting extension instance ${lensExtensionId}`);\n const instance = this.instances.get(lensExtensionId);\n if (!instance) {\n return;\n }\n try {\n instance.disable();\n this.events.emit(\"remove\", instance);\n this.instances.delete(lensExtensionId);\n this.nonInstancesByName.delete(instance.name);\n }\n catch (error) {\n _main_logger__WEBPACK_IMPORTED_MODULE_6__[\"default\"].error(`${logModule}: deactivation extension error`, { lensExtensionId, error });\n }\n }\n removeExtension(lensExtensionId) {\n this.removeInstance(lensExtensionId);\n if (!this.extensions.delete(lensExtensionId)) {\n throw new Error(`Can't remove extension ${lensExtensionId}, doesn't exist.`);\n }\n }\n setIsEnabled(lensExtensionId, isEnabled) {\n this.extensions.get(lensExtensionId).isEnabled = isEnabled;\n }\n async initMain() {\n this.isLoaded = true;\n this.loadOnMain();\n (0,_common_ipc__WEBPACK_IMPORTED_MODULE_4__.ipcMainHandle)(_common_ipc_extension_handling__WEBPACK_IMPORTED_MODULE_8__.extensionLoaderFromMainChannel, () => {\n return Array.from(this.toJSON());\n });\n (0,_common_ipc__WEBPACK_IMPORTED_MODULE_4__.ipcMainOn)(_common_ipc_extension_handling__WEBPACK_IMPORTED_MODULE_8__.extensionLoaderFromRendererChannel, (event, extensions) => {\n this.syncExtensions(extensions);\n });\n }\n async initRenderer() {\n const extensionListHandler = (extensions) => {\n this.isLoaded = true;\n this.syncExtensions(extensions);\n const receivedExtensionIds = extensions.map(([lensExtensionId]) => lensExtensionId);\n // Remove deleted extensions in renderer side only\n this.extensions.forEach((_, lensExtensionId) => {\n if (!receivedExtensionIds.includes(lensExtensionId)) {\n this.removeExtension(lensExtensionId);\n }\n });\n };\n (0,_renderer_ipc__WEBPACK_IMPORTED_MODULE_9__.requestExtensionLoaderInitialState)().then(extensionListHandler);\n (0,_common_ipc__WEBPACK_IMPORTED_MODULE_4__.ipcRendererOn)(_common_ipc_extension_handling__WEBPACK_IMPORTED_MODULE_8__.extensionLoaderFromMainChannel, (event, extensions) => {\n extensionListHandler(extensions);\n });\n }\n broadcastExtensions() {\n const channel = electron__WEBPACK_IMPORTED_MODULE_0__.ipcRenderer\n ? _common_ipc_extension_handling__WEBPACK_IMPORTED_MODULE_8__.extensionLoaderFromRendererChannel\n : _common_ipc_extension_handling__WEBPACK_IMPORTED_MODULE_8__.extensionLoaderFromMainChannel;\n (0,_common_ipc__WEBPACK_IMPORTED_MODULE_4__.broadcastMessage)(channel, Array.from(this.extensions));\n }\n syncExtensions(extensions) {\n extensions.forEach(([lensExtensionId, extension]) => {\n if (!(0,lodash__WEBPACK_IMPORTED_MODULE_2__.isEqual)(this.extensions.get(lensExtensionId), extension)) {\n this.extensions.set(lensExtensionId, extension);\n }\n });\n }\n loadOnMain() {\n this.autoInitExtensions(() => Promise.resolve([]));\n }\n async loadExtensions(installedExtensions, register) {\n // Steps of the function:\n // 1. require and call .activate for each Extension\n // 2. Wait until every extension's onActivate has been resolved\n // 3. Call .enable for each extension\n // 4. Return ExtensionLoading[]\n const extensions = [...installedExtensions.entries()]\n .map(([extId, extension]) => {\n const alreadyInit = this.instances.has(extId) || this.nonInstancesByName.has(extension.manifest.name);\n if (extension.isCompatible && extension.isEnabled && !alreadyInit) {\n try {\n const LensExtensionClass = this.requireExtension(extension);\n if (!LensExtensionClass) {\n this.nonInstancesByName.add(extension.manifest.name);\n return null;\n }\n const instance = this.dependencies.createExtensionInstance(LensExtensionClass, extension);\n this.instances.set(extId, instance);\n return {\n instance,\n installedExtension: extension,\n activated: instance.activate(),\n };\n }\n catch (err) {\n _main_logger__WEBPACK_IMPORTED_MODULE_6__[\"default\"].error(`${logModule}: error loading extension`, { ext: extension, err });\n }\n }\n else if (!extension.isEnabled && alreadyInit) {\n this.removeInstance(extId);\n }\n return null;\n })\n // Remove null values\n .filter(extension => Boolean(extension));\n // We first need to wait until each extension's `onActivate` is resolved or rejected,\n // as this might register new catalog categories. Afterwards we can safely .enable the extension.\n await Promise.all(extensions.map(extension => \n // If extension activation fails, log error\n extension.activated.catch((error) => {\n _main_logger__WEBPACK_IMPORTED_MODULE_6__[\"default\"].error(`${logModule}: activation extension error`, { ext: extension.installedExtension, error });\n })));\n // Return ExtensionLoading[]\n return extensions.map(extension => {\n const loaded = extension.instance.enable(register).catch((err) => {\n _main_logger__WEBPACK_IMPORTED_MODULE_6__[\"default\"].error(`${logModule}: failed to enable`, { ext: extension, err });\n });\n return {\n isBundled: extension.installedExtension.isBundled,\n loaded,\n };\n });\n }\n autoInitExtensions(register) {\n // Setup reaction to load extensions on JSON changes\n (0,mobx__WEBPACK_IMPORTED_MODULE_10__.reaction)(() => this.toJSON(), installedExtensions => this.loadExtensions(installedExtensions, register));\n // Load initial extensions\n return this.loadExtensions(this.toJSON(), register);\n }\n requireExtension(extension) {\n const entryPointName = electron__WEBPACK_IMPORTED_MODULE_0__.ipcRenderer ? \"renderer\" : \"main\";\n const extRelativePath = extension.manifest[entryPointName];\n if (!extRelativePath) {\n return null;\n }\n const extAbsolutePath = path__WEBPACK_IMPORTED_MODULE_3___default().resolve(path__WEBPACK_IMPORTED_MODULE_3___default().join(path__WEBPACK_IMPORTED_MODULE_3___default().dirname(extension.manifestPath), extRelativePath));\n try {\n return require(extAbsolutePath).default;\n }\n catch (error) {\n if (electron__WEBPACK_IMPORTED_MODULE_0__.ipcRenderer) {\n console.error(`${logModule}: can't load ${entryPointName} for \"${extension.manifest.name}\": ${error.stack || error}`, extension);\n }\n else {\n _main_logger__WEBPACK_IMPORTED_MODULE_6__[\"default\"].error(`${logModule}: can't load ${entryPointName} for \"${extension.manifest.name}\": ${error}`, { extension });\n }\n }\n return null;\n }\n getExtension(extId) {\n return this.extensions.get(extId);\n }\n getInstanceById(extId) {\n return this.instances.get(extId);\n }\n toJSON() {\n return (0,_common_utils__WEBPACK_IMPORTED_MODULE_5__.toJS)(this.extensions);\n }\n}\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_10__.observable,\n __metadata(\"design:type\", Object)\n], ExtensionLoader.prototype, \"isLoaded\", void 0);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_10__.computed,\n __metadata(\"design:type\", Array),\n __metadata(\"design:paramtypes\", [])\n], ExtensionLoader.prototype, \"enabledExtensionInstances\", null);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_10__.computed,\n __metadata(\"design:type\", Map),\n __metadata(\"design:paramtypes\", [])\n], ExtensionLoader.prototype, \"userExtensions\", null);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_10__.computed,\n __metadata(\"design:type\", Object),\n __metadata(\"design:paramtypes\", [])\n], ExtensionLoader.prototype, \"storeState\", null);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_10__.action,\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", []),\n __metadata(\"design:returntype\", Promise)\n], ExtensionLoader.prototype, \"init\", null);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_10__.action,\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [String]),\n __metadata(\"design:returntype\", void 0)\n], ExtensionLoader.prototype, \"removeInstance\", null);\n\n\n//# sourceURL=webpack://open-lens/./src/extensions/extension-loader/extension-loader.ts?");
34142
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"ExtensionLoader\": () => (/* binding */ ExtensionLoader)\n/* harmony export */ });\n/* harmony import */ var electron__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! electron */ \"electron\");\n/* harmony import */ var electron__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(electron__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var events__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! events */ \"events\");\n/* harmony import */ var events__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(events__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var lodash__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! lodash */ \"./node_modules/lodash/lodash.js\");\n/* harmony import */ var lodash__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(lodash__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var mobx__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! mobx */ \"./node_modules/mobx/dist/mobx.esm.js\");\n/* harmony import */ var path__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! path */ \"path\");\n/* harmony import */ var path__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(path__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _common_ipc__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../common/ipc */ \"./src/common/ipc/index.ts\");\n/* harmony import */ var _common_utils__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../common/utils */ \"./src/common/utils/index.ts\");\n/* harmony import */ var _main_logger__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../main/logger */ \"./src/main/logger.ts\");\n/* harmony import */ var _registries__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../registries */ \"./src/extensions/registries/index.ts\");\n/* harmony import */ var _common_ipc_extension_handling__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../common/ipc/extension-handling */ \"./src/common/ipc/extension-handling.ts\");\n/* harmony import */ var _renderer_ipc__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../renderer/ipc */ \"./src/renderer/ipc/index.ts\");\n/**\n * Copyright (c) OpenLens Authors. All rights reserved.\n * Licensed under MIT License. See LICENSE in root directory for more information.\n */\nvar __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n 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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (undefined && undefined.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\n\n\n\n\n\n\n\n\n\n\n\nconst logModule = \"[EXTENSIONS-LOADER]\";\n/**\n * Loads installed extensions to the Lens application\n */\nclass ExtensionLoader {\n constructor(dependencies) {\n Object.defineProperty(this, \"dependencies\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: dependencies\n });\n Object.defineProperty(this, \"extensions\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: mobx__WEBPACK_IMPORTED_MODULE_10__.observable.map()\n });\n Object.defineProperty(this, \"instances\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: mobx__WEBPACK_IMPORTED_MODULE_10__.observable.map()\n });\n /**\n * This is the set of extensions that don't come with either\n * - Main.LensExtension when running in the main process\n * - Renderer.LensExtension when running in the renderer process\n */\n Object.defineProperty(this, \"nonInstancesByName\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: mobx__WEBPACK_IMPORTED_MODULE_10__.observable.set()\n });\n /**\n * This is updated by the `observe` in the constructor. DO NOT write directly to it\n */\n Object.defineProperty(this, \"instancesByName\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: mobx__WEBPACK_IMPORTED_MODULE_10__.observable.map()\n });\n // emits event \"remove\" of type LensExtension when the extension is removed\n Object.defineProperty(this, \"events\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: new events__WEBPACK_IMPORTED_MODULE_1__.EventEmitter()\n });\n Object.defineProperty(this, \"isLoaded\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: false\n });\n Object.defineProperty(this, \"loadOnClusterManagerRenderer\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: () => {\n _main_logger__WEBPACK_IMPORTED_MODULE_6__[\"default\"].debug(`${logModule}: load on main renderer (cluster manager)`);\n return this.autoInitExtensions(async (extension) => {\n const removeItems = [\n _registries__WEBPACK_IMPORTED_MODULE_7__.GlobalPageRegistry.getInstance().add(extension.globalPages, extension),\n _registries__WEBPACK_IMPORTED_MODULE_7__.EntitySettingRegistry.getInstance().add(extension.entitySettings),\n _registries__WEBPACK_IMPORTED_MODULE_7__.CatalogEntityDetailRegistry.getInstance().add(extension.catalogEntityDetailItems),\n ];\n this.events.on(\"remove\", (removedExtension) => {\n if (removedExtension.id === extension.id) {\n removeItems.forEach(remove => {\n remove();\n });\n }\n });\n return removeItems;\n });\n }\n });\n Object.defineProperty(this, \"loadOnClusterRenderer\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: (getCluster) => {\n _main_logger__WEBPACK_IMPORTED_MODULE_6__[\"default\"].debug(`${logModule}: load on cluster renderer (dashboard)`);\n this.autoInitExtensions(async (extension) => {\n // getCluster must be a callback, as the entity might be available only after an extension has been loaded\n if ((await extension.isEnabledForCluster(getCluster())) === false) {\n return [];\n }\n const removeItems = [\n _registries__WEBPACK_IMPORTED_MODULE_7__.ClusterPageRegistry.getInstance().add(extension.clusterPages, extension),\n _registries__WEBPACK_IMPORTED_MODULE_7__.ClusterPageMenuRegistry.getInstance().add(extension.clusterPageMenus, extension),\n _registries__WEBPACK_IMPORTED_MODULE_7__.KubeObjectDetailRegistry.getInstance().add(extension.kubeObjectDetailItems),\n ];\n this.events.on(\"remove\", (removedExtension) => {\n if (removedExtension.id === extension.id) {\n removeItems.forEach(remove => {\n remove();\n });\n }\n });\n return removeItems;\n });\n }\n });\n (0,mobx__WEBPACK_IMPORTED_MODULE_10__.makeObservable)(this);\n (0,mobx__WEBPACK_IMPORTED_MODULE_10__.observe)(this.instances, change => {\n switch (change.type) {\n case \"add\":\n if (this.instancesByName.has(change.newValue.name)) {\n throw new TypeError(\"Extension names must be unique\");\n }\n this.instancesByName.set(change.newValue.name, change.newValue);\n break;\n case \"delete\":\n this.instancesByName.delete(change.oldValue.name);\n break;\n case \"update\":\n throw new Error(\"Extension instances shouldn't be updated\");\n }\n });\n }\n get whenLoaded() {\n return (0,mobx__WEBPACK_IMPORTED_MODULE_10__.when)(() => this.isLoaded);\n }\n get enabledExtensionInstances() {\n return [...this.instances.values()].filter(extension => extension.isEnabled);\n }\n get userExtensions() {\n const extensions = this.toJSON();\n extensions.forEach((ext, extId) => {\n if (ext.isBundled) {\n extensions.delete(extId);\n }\n });\n return extensions;\n }\n /**\n * Get the extension instance by its manifest name\n * @param name The name of the extension\n * @returns one of the following:\n * - the instance of `Main.LensExtension` on the main process if created\n * - the instance of `Renderer.LensExtension` on the renderer process if created\n * - `null` if no class definition is provided for the current process\n * - `undefined` if the name is not known about\n */\n getInstanceByName(name) {\n if (this.nonInstancesByName.has(name)) {\n return null;\n }\n return this.instancesByName.get(name);\n }\n // Transform userExtensions to a state object for storing into ExtensionsStore\n get storeState() {\n return Object.fromEntries(Array.from(this.userExtensions)\n .map(([extId, extension]) => [extId, {\n enabled: extension.isEnabled,\n name: extension.manifest.name,\n }]));\n }\n async init() {\n if (electron__WEBPACK_IMPORTED_MODULE_0__.ipcRenderer) {\n await this.initRenderer();\n }\n else {\n await this.initMain();\n }\n await Promise.all([this.whenLoaded]);\n // broadcasting extensions between main/renderer processes\n (0,mobx__WEBPACK_IMPORTED_MODULE_10__.reaction)(() => this.toJSON(), () => this.broadcastExtensions(), {\n fireImmediately: true,\n });\n (0,mobx__WEBPACK_IMPORTED_MODULE_10__.reaction)(() => this.storeState, (state) => {\n this.dependencies.updateExtensionsState(state);\n });\n }\n initExtensions(extensions) {\n this.extensions.replace(extensions);\n }\n addExtension(extension) {\n this.extensions.set(extension.id, extension);\n }\n removeInstance(lensExtensionId) {\n _main_logger__WEBPACK_IMPORTED_MODULE_6__[\"default\"].info(`${logModule} deleting extension instance ${lensExtensionId}`);\n const instance = this.instances.get(lensExtensionId);\n if (!instance) {\n return;\n }\n try {\n instance.disable();\n this.events.emit(\"remove\", instance);\n this.instances.delete(lensExtensionId);\n this.nonInstancesByName.delete(instance.name);\n }\n catch (error) {\n _main_logger__WEBPACK_IMPORTED_MODULE_6__[\"default\"].error(`${logModule}: deactivation extension error`, { lensExtensionId, error });\n }\n }\n removeExtension(lensExtensionId) {\n this.removeInstance(lensExtensionId);\n if (!this.extensions.delete(lensExtensionId)) {\n throw new Error(`Can't remove extension ${lensExtensionId}, doesn't exist.`);\n }\n }\n setIsEnabled(lensExtensionId, isEnabled) {\n this.extensions.get(lensExtensionId).isEnabled = isEnabled;\n }\n async initMain() {\n this.isLoaded = true;\n this.loadOnMain();\n (0,_common_ipc__WEBPACK_IMPORTED_MODULE_4__.ipcMainHandle)(_common_ipc_extension_handling__WEBPACK_IMPORTED_MODULE_8__.extensionLoaderFromMainChannel, () => {\n return Array.from(this.toJSON());\n });\n (0,_common_ipc__WEBPACK_IMPORTED_MODULE_4__.ipcMainOn)(_common_ipc_extension_handling__WEBPACK_IMPORTED_MODULE_8__.extensionLoaderFromRendererChannel, (event, extensions) => {\n this.syncExtensions(extensions);\n });\n }\n async initRenderer() {\n const extensionListHandler = (extensions) => {\n this.isLoaded = true;\n this.syncExtensions(extensions);\n const receivedExtensionIds = extensions.map(([lensExtensionId]) => lensExtensionId);\n // Remove deleted extensions in renderer side only\n this.extensions.forEach((_, lensExtensionId) => {\n if (!receivedExtensionIds.includes(lensExtensionId)) {\n this.removeExtension(lensExtensionId);\n }\n });\n };\n (0,_renderer_ipc__WEBPACK_IMPORTED_MODULE_9__.requestExtensionLoaderInitialState)().then(extensionListHandler);\n (0,_common_ipc__WEBPACK_IMPORTED_MODULE_4__.ipcRendererOn)(_common_ipc_extension_handling__WEBPACK_IMPORTED_MODULE_8__.extensionLoaderFromMainChannel, (event, extensions) => {\n extensionListHandler(extensions);\n });\n }\n broadcastExtensions() {\n const channel = electron__WEBPACK_IMPORTED_MODULE_0__.ipcRenderer\n ? _common_ipc_extension_handling__WEBPACK_IMPORTED_MODULE_8__.extensionLoaderFromRendererChannel\n : _common_ipc_extension_handling__WEBPACK_IMPORTED_MODULE_8__.extensionLoaderFromMainChannel;\n (0,_common_ipc__WEBPACK_IMPORTED_MODULE_4__.broadcastMessage)(channel, Array.from(this.extensions));\n }\n syncExtensions(extensions) {\n extensions.forEach(([lensExtensionId, extension]) => {\n if (!(0,lodash__WEBPACK_IMPORTED_MODULE_2__.isEqual)(this.extensions.get(lensExtensionId), extension)) {\n this.extensions.set(lensExtensionId, extension);\n }\n });\n }\n loadOnMain() {\n this.autoInitExtensions(() => Promise.resolve([]));\n }\n async loadExtensions(installedExtensions, register) {\n // Steps of the function:\n // 1. require and call .activate for each Extension\n // 2. Wait until every extension's onActivate has been resolved\n // 3. Call .enable for each extension\n // 4. Return ExtensionLoading[]\n const extensions = [...installedExtensions.entries()]\n .map(([extId, extension]) => {\n const alreadyInit = this.instances.has(extId) || this.nonInstancesByName.has(extension.manifest.name);\n if (extension.isCompatible && extension.isEnabled && !alreadyInit) {\n try {\n const LensExtensionClass = this.requireExtension(extension);\n if (!LensExtensionClass) {\n this.nonInstancesByName.add(extension.manifest.name);\n return null;\n }\n const instance = this.dependencies.createExtensionInstance(LensExtensionClass, extension);\n this.instances.set(extId, instance);\n return {\n instance,\n installedExtension: extension,\n activated: instance.activate(),\n };\n }\n catch (err) {\n _main_logger__WEBPACK_IMPORTED_MODULE_6__[\"default\"].error(`${logModule}: error loading extension`, { ext: extension, err });\n }\n }\n else if (!extension.isEnabled && alreadyInit) {\n this.removeInstance(extId);\n }\n return null;\n })\n // Remove null values\n .filter(extension => Boolean(extension));\n // We first need to wait until each extension's `onActivate` is resolved or rejected,\n // as this might register new catalog categories. Afterwards we can safely .enable the extension.\n await Promise.all(extensions.map(extension => \n // If extension activation fails, log error\n extension.activated.catch((error) => {\n _main_logger__WEBPACK_IMPORTED_MODULE_6__[\"default\"].error(`${logModule}: activation extension error`, { ext: extension.installedExtension, error });\n })));\n // Return ExtensionLoading[]\n return extensions.map(extension => {\n const loaded = extension.instance.enable(register).catch((err) => {\n _main_logger__WEBPACK_IMPORTED_MODULE_6__[\"default\"].error(`${logModule}: failed to enable`, { ext: extension, err });\n });\n return {\n isBundled: extension.installedExtension.isBundled,\n loaded,\n };\n });\n }\n autoInitExtensions(register) {\n // Setup reaction to load extensions on JSON changes\n (0,mobx__WEBPACK_IMPORTED_MODULE_10__.reaction)(() => this.toJSON(), installedExtensions => this.loadExtensions(installedExtensions, register));\n // Load initial extensions\n return this.loadExtensions(this.toJSON(), register);\n }\n requireExtension(extension) {\n const entryPointName = electron__WEBPACK_IMPORTED_MODULE_0__.ipcRenderer ? \"renderer\" : \"main\";\n const extRelativePath = extension.manifest[entryPointName];\n if (!extRelativePath) {\n return null;\n }\n const extAbsolutePath = path__WEBPACK_IMPORTED_MODULE_3___default().resolve(path__WEBPACK_IMPORTED_MODULE_3___default().join(path__WEBPACK_IMPORTED_MODULE_3___default().dirname(extension.manifestPath), extRelativePath));\n try {\n return require(extAbsolutePath).default;\n }\n catch (error) {\n if (electron__WEBPACK_IMPORTED_MODULE_0__.ipcRenderer) {\n console.error(`${logModule}: can't load ${entryPointName} for \"${extension.manifest.name}\": ${error.stack || error}`, extension);\n }\n else {\n _main_logger__WEBPACK_IMPORTED_MODULE_6__[\"default\"].error(`${logModule}: can't load ${entryPointName} for \"${extension.manifest.name}\": ${error}`, { extension });\n }\n }\n return null;\n }\n getExtension(extId) {\n return this.extensions.get(extId);\n }\n getInstanceById(extId) {\n return this.instances.get(extId);\n }\n toJSON() {\n return (0,_common_utils__WEBPACK_IMPORTED_MODULE_5__.toJS)(this.extensions);\n }\n}\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_10__.observable,\n __metadata(\"design:type\", Object)\n], ExtensionLoader.prototype, \"isLoaded\", void 0);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_10__.computed,\n __metadata(\"design:type\", Array),\n __metadata(\"design:paramtypes\", [])\n], ExtensionLoader.prototype, \"enabledExtensionInstances\", null);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_10__.computed,\n __metadata(\"design:type\", Map),\n __metadata(\"design:paramtypes\", [])\n], ExtensionLoader.prototype, \"userExtensions\", null);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_10__.computed,\n __metadata(\"design:type\", Object),\n __metadata(\"design:paramtypes\", [])\n], ExtensionLoader.prototype, \"storeState\", null);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_10__.action,\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", []),\n __metadata(\"design:returntype\", Promise)\n], ExtensionLoader.prototype, \"init\", null);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_10__.action,\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [String]),\n __metadata(\"design:returntype\", void 0)\n], ExtensionLoader.prototype, \"removeInstance\", null);\n\n\n//# sourceURL=webpack://open-lens/./src/extensions/extension-loader/extension-loader.ts?");
34233
34143
 
34234
34144
  /***/ }),
34235
34145
 
@@ -34460,7 +34370,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
34460
34370
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
34461
34371
 
34462
34372
  "use strict";
34463
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"ClusterPageRegistry\": () => (/* reexport safe */ _page_registry__WEBPACK_IMPORTED_MODULE_0__.ClusterPageRegistry),\n/* harmony export */ \"GlobalPageRegistry\": () => (/* reexport safe */ _page_registry__WEBPACK_IMPORTED_MODULE_0__.GlobalPageRegistry),\n/* harmony export */ \"getExtensionPageUrl\": () => (/* reexport safe */ _page_registry__WEBPACK_IMPORTED_MODULE_0__.getExtensionPageUrl),\n/* harmony export */ \"ClusterPageMenuRegistry\": () => (/* reexport safe */ _page_menu_registry__WEBPACK_IMPORTED_MODULE_1__.ClusterPageMenuRegistry),\n/* harmony export */ \"KubeObjectDetailRegistry\": () => (/* reexport safe */ _kube_object_detail_registry__WEBPACK_IMPORTED_MODULE_2__.KubeObjectDetailRegistry),\n/* harmony export */ \"KubeObjectStatusRegistry\": () => (/* reexport safe */ _kube_object_status_registry__WEBPACK_IMPORTED_MODULE_3__.KubeObjectStatusRegistry),\n/* harmony export */ \"EntitySettingRegistry\": () => (/* reexport safe */ _entity_setting_registry__WEBPACK_IMPORTED_MODULE_4__.EntitySettingRegistry),\n/* harmony export */ \"CatalogEntityDetailRegistry\": () => (/* reexport safe */ _catalog_entity_detail_registry__WEBPACK_IMPORTED_MODULE_5__.CatalogEntityDetailRegistry),\n/* harmony export */ \"WorkloadsOverviewDetailRegistry\": () => (/* reexport safe */ _workloads_overview_detail_registry__WEBPACK_IMPORTED_MODULE_6__.WorkloadsOverviewDetailRegistry)\n/* harmony export */ });\n/* harmony import */ var _page_registry__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./page-registry */ \"./src/extensions/registries/page-registry.ts\");\n/* harmony import */ var _page_menu_registry__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./page-menu-registry */ \"./src/extensions/registries/page-menu-registry.ts\");\n/* harmony import */ var _kube_object_detail_registry__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./kube-object-detail-registry */ \"./src/extensions/registries/kube-object-detail-registry.ts\");\n/* harmony import */ var _kube_object_status_registry__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./kube-object-status-registry */ \"./src/extensions/registries/kube-object-status-registry.ts\");\n/* harmony import */ var _entity_setting_registry__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./entity-setting-registry */ \"./src/extensions/registries/entity-setting-registry.ts\");\n/* harmony import */ var _catalog_entity_detail_registry__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./catalog-entity-detail-registry */ \"./src/extensions/registries/catalog-entity-detail-registry.ts\");\n/* harmony import */ var _workloads_overview_detail_registry__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./workloads-overview-detail-registry */ \"./src/extensions/registries/workloads-overview-detail-registry.ts\");\n/* harmony import */ var _protocol_handler__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./protocol-handler */ \"./src/extensions/registries/protocol-handler.ts\");\n/**\n * Copyright (c) OpenLens Authors. All rights reserved.\n * Licensed under MIT License. See LICENSE in root directory for more information.\n */\n// All registries managed by extensions api\n\n\n\n\n\n\n\n\n\n\n//# sourceURL=webpack://open-lens/./src/extensions/registries/index.ts?");
34373
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"ClusterPageRegistry\": () => (/* reexport safe */ _page_registry__WEBPACK_IMPORTED_MODULE_0__.ClusterPageRegistry),\n/* harmony export */ \"GlobalPageRegistry\": () => (/* reexport safe */ _page_registry__WEBPACK_IMPORTED_MODULE_0__.GlobalPageRegistry),\n/* harmony export */ \"getExtensionPageUrl\": () => (/* reexport safe */ _page_registry__WEBPACK_IMPORTED_MODULE_0__.getExtensionPageUrl),\n/* harmony export */ \"ClusterPageMenuRegistry\": () => (/* reexport safe */ _page_menu_registry__WEBPACK_IMPORTED_MODULE_1__.ClusterPageMenuRegistry),\n/* harmony export */ \"KubeObjectDetailRegistry\": () => (/* reexport safe */ _kube_object_detail_registry__WEBPACK_IMPORTED_MODULE_2__.KubeObjectDetailRegistry),\n/* harmony export */ \"EntitySettingRegistry\": () => (/* reexport safe */ _entity_setting_registry__WEBPACK_IMPORTED_MODULE_3__.EntitySettingRegistry),\n/* harmony export */ \"CatalogEntityDetailRegistry\": () => (/* reexport safe */ _catalog_entity_detail_registry__WEBPACK_IMPORTED_MODULE_4__.CatalogEntityDetailRegistry)\n/* harmony export */ });\n/* harmony import */ var _page_registry__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./page-registry */ \"./src/extensions/registries/page-registry.ts\");\n/* harmony import */ var _page_menu_registry__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./page-menu-registry */ \"./src/extensions/registries/page-menu-registry.ts\");\n/* harmony import */ var _kube_object_detail_registry__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./kube-object-detail-registry */ \"./src/extensions/registries/kube-object-detail-registry.ts\");\n/* harmony import */ var _entity_setting_registry__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./entity-setting-registry */ \"./src/extensions/registries/entity-setting-registry.ts\");\n/* harmony import */ var _catalog_entity_detail_registry__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./catalog-entity-detail-registry */ \"./src/extensions/registries/catalog-entity-detail-registry.ts\");\n/* harmony import */ var _protocol_handler__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./protocol-handler */ \"./src/extensions/registries/protocol-handler.ts\");\n/**\n * Copyright (c) OpenLens Authors. All rights reserved.\n * Licensed under MIT License. See LICENSE in root directory for more information.\n */\n// All registries managed by extensions api\n\n\n\n\n\n\n\n\n//# sourceURL=webpack://open-lens/./src/extensions/registries/index.ts?");
34464
34374
 
34465
34375
  /***/ }),
34466
34376
 
@@ -34475,17 +34385,6 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
34475
34385
 
34476
34386
  /***/ }),
34477
34387
 
34478
- /***/ "./src/extensions/registries/kube-object-status-registry.ts":
34479
- /*!******************************************************************!*\
34480
- !*** ./src/extensions/registries/kube-object-status-registry.ts ***!
34481
- \******************************************************************/
34482
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
34483
-
34484
- "use strict";
34485
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"KubeObjectStatusRegistry\": () => (/* binding */ KubeObjectStatusRegistry)\n/* harmony export */ });\n/* harmony import */ var _base_registry__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./base-registry */ \"./src/extensions/registries/base-registry.ts\");\n/**\n * Copyright (c) OpenLens Authors. All rights reserved.\n * Licensed under MIT License. See LICENSE in root directory for more information.\n */\n\nclass KubeObjectStatusRegistry extends _base_registry__WEBPACK_IMPORTED_MODULE_0__.BaseRegistry {\n getItemsForKind(kind, apiVersion) {\n return this.getItems()\n .filter((item) => (item.kind === kind\n && item.apiVersions.includes(apiVersion)));\n }\n getItemsForObject(src) {\n return this.getItemsForKind(src.kind, src.apiVersion)\n .map(item => item.resolve(src))\n .filter(Boolean);\n }\n}\n\n\n//# sourceURL=webpack://open-lens/./src/extensions/registries/kube-object-status-registry.ts?");
34486
-
34487
- /***/ }),
34488
-
34489
34388
  /***/ "./src/extensions/registries/page-menu-registry.ts":
34490
34389
  /*!*********************************************************!*\
34491
34390
  !*** ./src/extensions/registries/page-menu-registry.ts ***!
@@ -34519,17 +34418,6 @@ eval("__webpack_require__.r(__webpack_exports__);\n/**\n * Copyright (c) OpenLen
34519
34418
 
34520
34419
  /***/ }),
34521
34420
 
34522
- /***/ "./src/extensions/registries/workloads-overview-detail-registry.ts":
34523
- /*!*************************************************************************!*\
34524
- !*** ./src/extensions/registries/workloads-overview-detail-registry.ts ***!
34525
- \*************************************************************************/
34526
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
34527
-
34528
- "use strict";
34529
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"WorkloadsOverviewDetailRegistry\": () => (/* binding */ WorkloadsOverviewDetailRegistry)\n/* harmony export */ });\n/* harmony import */ var lodash__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash */ \"./node_modules/lodash/lodash.js\");\n/* harmony import */ var lodash__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _base_registry__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./base-registry */ \"./src/extensions/registries/base-registry.ts\");\n/**\n * Copyright (c) OpenLens Authors. All rights reserved.\n * Licensed under MIT License. See LICENSE in root directory for more information.\n */\n\n\nclass WorkloadsOverviewDetailRegistry extends _base_registry__WEBPACK_IMPORTED_MODULE_1__.BaseRegistry {\n getItems() {\n return (0,lodash__WEBPACK_IMPORTED_MODULE_0__.orderBy)(super.getItems(), \"priority\", \"desc\");\n }\n getRegisteredItem(item) {\n const { priority = 50, ...rest } = item;\n return { priority, ...rest };\n }\n}\n\n\n//# sourceURL=webpack://open-lens/./src/extensions/registries/workloads-overview-detail-registry.ts?");
34530
-
34531
- /***/ }),
34532
-
34533
34421
  /***/ "./src/extensions/renderer-api/catalog.ts":
34534
34422
  /*!************************************************!*\
34535
34423
  !*** ./src/extensions/renderer-api/catalog.ts ***!
@@ -34691,7 +34579,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
34691
34579
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
34692
34580
 
34693
34581
  "use strict";
34694
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"isLongRunningRequest\": () => (/* binding */ isLongRunningRequest),\n/* harmony export */ \"LensProxy\": () => (/* binding */ LensProxy)\n/* harmony export */ });\n/* harmony import */ var spdy__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! spdy */ \"./node_modules/spdy/lib/spdy.js\");\n/* harmony import */ var spdy__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(spdy__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var http_proxy__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! http-proxy */ \"./node_modules/http-proxy/index.js\");\n/* harmony import */ var http_proxy__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(http_proxy__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _common_vars__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../common/vars */ \"./src/common/vars.ts\");\n/* harmony import */ var _logger__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./logger */ \"./src/main/logger.ts\");\n/* harmony import */ var _common_utils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../common/utils */ \"./src/common/utils/index.ts\");\n/* harmony import */ var _common_app_event_bus_event_bus__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../common/app-event-bus/event-bus */ \"./src/common/app-event-bus/event-bus.ts\");\n/* harmony import */ var _utils_parse_query__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./utils/parse-query */ \"./src/main/utils/parse-query.ts\");\n/**\n * Copyright (c) OpenLens Authors. All rights reserved.\n * Licensed under MIT License. See LICENSE in root directory for more information.\n */\n\n\n\n\n\n\n\nconst watchParam = \"watch\";\nconst followParam = \"follow\";\nfunction isLongRunningRequest(reqUrl) {\n const url = new URL(reqUrl, \"http://localhost\");\n return (0,_utils_parse_query__WEBPACK_IMPORTED_MODULE_6__.getBoolean)(url.searchParams, watchParam) || (0,_utils_parse_query__WEBPACK_IMPORTED_MODULE_6__.getBoolean)(url.searchParams, followParam);\n}\n/**\n * This is the list of ports that chrome considers unsafe to allow HTTP\n * conntections to. Because they are the standard ports for processes that are\n * too forgiving in the connection types they accept.\n *\n * If we get one of these ports, the easiest thing to do is to just try again.\n *\n * Source: https://chromium.googlesource.com/chromium/src.git/+/refs/heads/main/net/base/port_util.cc\n */\nconst disallowedPorts = new Set([\n 1, 7, 9, 11, 13, 15, 17, 19, 20, 21, 22, 23, 25, 37, 42, 43, 53, 69, 77, 79,\n 87, 95, 101, 102, 103, 104, 109, 110, 111, 113, 115, 117, 119, 123, 135, 137,\n 139, 143, 161, 179, 389, 427, 465, 512, 513, 514, 515, 526, 530, 531, 532,\n 540, 548, 554, 556, 563, 587, 601, 636, 989, 990, 993, 995, 1719, 1720, 1723,\n 2049, 3659, 4045, 5060, 5061, 6000, 6566, 6665, 6666, 6667, 6668, 6669, 6697,\n 10080,\n]);\nclass LensProxy extends _common_utils__WEBPACK_IMPORTED_MODULE_4__.Singleton {\n constructor(router, { shellApiRequest, kubeApiRequest, getClusterForRequest }) {\n super();\n Object.defineProperty(this, \"router\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: router\n });\n Object.defineProperty(this, \"origin\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"proxyServer\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"closed\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: false\n });\n Object.defineProperty(this, \"retryCounters\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: new Map()\n });\n Object.defineProperty(this, \"proxy\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: this.createProxy()\n });\n Object.defineProperty(this, \"getClusterForRequest\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"port\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n this.getClusterForRequest = getClusterForRequest;\n this.proxyServer = spdy__WEBPACK_IMPORTED_MODULE_0___default().createServer({\n spdy: {\n plain: true,\n protocols: [\"http/1.1\", \"spdy/3.1\"],\n },\n }, (req, res) => {\n this.handleRequest(req, res);\n });\n this.proxyServer\n .on(\"upgrade\", (req, socket, head) => {\n const isInternal = req.url.startsWith(`${_common_vars__WEBPACK_IMPORTED_MODULE_2__.apiPrefix}?`);\n const cluster = getClusterForRequest(req);\n if (!cluster) {\n return void _logger__WEBPACK_IMPORTED_MODULE_3__[\"default\"].error(`[LENS-PROXY]: Could not find cluster for upgrade request from url=${req.url}`);\n }\n const reqHandler = isInternal ? shellApiRequest : kubeApiRequest;\n (async () => reqHandler({ req, socket, head, cluster }))()\n .catch(error => _logger__WEBPACK_IMPORTED_MODULE_3__[\"default\"].error(\"[LENS-PROXY]: failed to handle proxy upgrade\", error));\n });\n }\n /**\n * Starts to listen on an OS provided port. Will reject if the server throws\n * an error.\n *\n * Resolves with the port number that was picked\n */\n attemptToListen() {\n return new Promise((resolve, reject) => {\n this.proxyServer.listen(0, \"127.0.0.1\");\n this.proxyServer\n .once(\"listening\", () => {\n this.proxyServer.removeAllListeners(\"error\"); // don't reject the promise\n const { address, port } = this.proxyServer.address();\n _logger__WEBPACK_IMPORTED_MODULE_3__[\"default\"].info(`[LENS-PROXY]: Proxy server has started at ${address}:${port}`);\n this.proxyServer.on(\"error\", (error) => {\n _logger__WEBPACK_IMPORTED_MODULE_3__[\"default\"].info(`[LENS-PROXY]: Subsequent error: ${error}`);\n });\n this.port = port;\n _common_app_event_bus_event_bus__WEBPACK_IMPORTED_MODULE_5__.appEventBus.emit({ name: \"lens-proxy\", action: \"listen\", params: { port } });\n resolve(port);\n })\n .once(\"error\", (error) => {\n _logger__WEBPACK_IMPORTED_MODULE_3__[\"default\"].info(`[LENS-PROXY]: Proxy server failed to start: ${error}`);\n reject(error);\n });\n });\n }\n /**\n * Starts the lens proxy.\n * @resolves After the server is listening on a good port\n * @rejects if there is an error before that happens\n */\n async listen() {\n var _a;\n const seenPorts = new Set();\n while (true) {\n (_a = this.proxyServer) === null || _a === void 0 ? void 0 : _a.close();\n const port = await this.attemptToListen();\n if (!disallowedPorts.has(port)) {\n // We didn't get a port that would result in an ERR_UNSAFE_PORT error, use it\n return;\n }\n _logger__WEBPACK_IMPORTED_MODULE_3__[\"default\"].warn(`[LENS-PROXY]: Proxy server has with port known to be considered unsafe to connect to by chrome, restarting...`);\n if (seenPorts.has(port)) {\n /**\n * Assume that if we have seen the port before, then the OS has looped\n * through all the ports possible and we will not be able to get a safe\n * port.\n */\n throw new Error(\"Failed to start LensProxy due to seeing too many unsafe ports. Please restart Lens.\");\n }\n else {\n seenPorts.add(port);\n }\n }\n }\n close() {\n _logger__WEBPACK_IMPORTED_MODULE_3__[\"default\"].info(\"[LENS-PROXY]: Closing server\");\n this.proxyServer.close();\n this.closed = true;\n }\n createProxy() {\n const proxy = http_proxy__WEBPACK_IMPORTED_MODULE_1___default().createProxyServer();\n proxy.on(\"proxyRes\", (proxyRes, req, res) => {\n const retryCounterId = this.getRequestId(req);\n if (this.retryCounters.has(retryCounterId)) {\n this.retryCounters.delete(retryCounterId);\n }\n if (!res.headersSent && req.url) {\n const url = new URL(req.url, \"http://localhost\");\n if (url.searchParams.has(\"watch\")) {\n res.statusCode = proxyRes.statusCode;\n res.flushHeaders();\n }\n }\n proxyRes.on(\"aborted\", () => {\n res.end();\n });\n });\n proxy.on(\"error\", (error, req, res, target) => {\n if (this.closed) {\n return;\n }\n _logger__WEBPACK_IMPORTED_MODULE_3__[\"default\"].error(`[LENS-PROXY]: http proxy errored for cluster: ${error}`, { url: req.url });\n if (target) {\n _logger__WEBPACK_IMPORTED_MODULE_3__[\"default\"].debug(`Failed proxy to target: ${JSON.stringify(target, null, 2)}`);\n if (req.method === \"GET\" && (!res.statusCode || res.statusCode >= 500)) {\n const reqId = this.getRequestId(req);\n const retryCount = this.retryCounters.get(reqId) || 0;\n const timeoutMs = retryCount * 250;\n if (retryCount < 20) {\n _logger__WEBPACK_IMPORTED_MODULE_3__[\"default\"].debug(`Retrying proxy request to url: ${reqId}`);\n setTimeout(() => {\n this.retryCounters.set(reqId, retryCount + 1);\n this.handleRequest(req, res)\n .catch(error => _logger__WEBPACK_IMPORTED_MODULE_3__[\"default\"].error(`[LENS-PROXY]: failed to handle request on proxy error: ${error}`));\n }, timeoutMs);\n }\n }\n }\n try {\n res.writeHead(500).end(`Oops, something went wrong.\\n${error}`);\n }\n catch (e) {\n _logger__WEBPACK_IMPORTED_MODULE_3__[\"default\"].error(`[LENS-PROXY]: Failed to write headers: `, e);\n }\n });\n return proxy;\n }\n async getProxyTarget(req, contextHandler) {\n if (req.url.startsWith(_common_vars__WEBPACK_IMPORTED_MODULE_2__.apiKubePrefix)) {\n delete req.headers.authorization;\n req.url = req.url.replace(_common_vars__WEBPACK_IMPORTED_MODULE_2__.apiKubePrefix, \"\");\n return contextHandler.getApiTarget(isLongRunningRequest(req.url));\n }\n }\n getRequestId(req) {\n return req.headers.host + req.url;\n }\n async handleRequest(req, res) {\n const cluster = this.getClusterForRequest(req);\n if (cluster) {\n const proxyTarget = await this.getProxyTarget(req, cluster.contextHandler);\n if (proxyTarget) {\n return this.proxy.web(req, res, proxyTarget);\n }\n }\n this.router.route(cluster, req, res);\n }\n}\n\n\n//# sourceURL=webpack://open-lens/./src/main/lens-proxy.ts?");
34582
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"isLongRunningRequest\": () => (/* binding */ isLongRunningRequest),\n/* harmony export */ \"LensProxy\": () => (/* binding */ LensProxy)\n/* harmony export */ });\n/* harmony import */ var spdy__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! spdy */ \"./node_modules/spdy/lib/spdy.js\");\n/* harmony import */ var spdy__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(spdy__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _common_vars__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../common/vars */ \"./src/common/vars.ts\");\n/* harmony import */ var _logger__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./logger */ \"./src/main/logger.ts\");\n/* harmony import */ var _common_utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../common/utils */ \"./src/common/utils/index.ts\");\n/* harmony import */ var _common_app_event_bus_event_bus__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../common/app-event-bus/event-bus */ \"./src/common/app-event-bus/event-bus.ts\");\n/* harmony import */ var _utils_parse_query__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./utils/parse-query */ \"./src/main/utils/parse-query.ts\");\n/**\n * Copyright (c) OpenLens Authors. All rights reserved.\n * Licensed under MIT License. See LICENSE in root directory for more information.\n */\n\n\n\n\n\n\nconst watchParam = \"watch\";\nconst followParam = \"follow\";\nfunction isLongRunningRequest(reqUrl) {\n const url = new URL(reqUrl, \"http://localhost\");\n return (0,_utils_parse_query__WEBPACK_IMPORTED_MODULE_5__.getBoolean)(url.searchParams, watchParam) || (0,_utils_parse_query__WEBPACK_IMPORTED_MODULE_5__.getBoolean)(url.searchParams, followParam);\n}\n/**\n * This is the list of ports that chrome considers unsafe to allow HTTP\n * conntections to. Because they are the standard ports for processes that are\n * too forgiving in the connection types they accept.\n *\n * If we get one of these ports, the easiest thing to do is to just try again.\n *\n * Source: https://chromium.googlesource.com/chromium/src.git/+/refs/heads/main/net/base/port_util.cc\n */\nconst disallowedPorts = new Set([\n 1, 7, 9, 11, 13, 15, 17, 19, 20, 21, 22, 23, 25, 37, 42, 43, 53, 69, 77, 79,\n 87, 95, 101, 102, 103, 104, 109, 110, 111, 113, 115, 117, 119, 123, 135, 137,\n 139, 143, 161, 179, 389, 427, 465, 512, 513, 514, 515, 526, 530, 531, 532,\n 540, 548, 554, 556, 563, 587, 601, 636, 989, 990, 993, 995, 1719, 1720, 1723,\n 2049, 3659, 4045, 5060, 5061, 6000, 6566, 6665, 6666, 6667, 6668, 6669, 6697,\n 10080,\n]);\nclass LensProxy extends _common_utils__WEBPACK_IMPORTED_MODULE_3__.Singleton {\n constructor(router, proxy, { shellApiRequest, kubeApiRequest, getClusterForRequest }) {\n super();\n Object.defineProperty(this, \"router\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: router\n });\n Object.defineProperty(this, \"proxy\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: proxy\n });\n Object.defineProperty(this, \"origin\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"proxyServer\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"closed\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: false\n });\n Object.defineProperty(this, \"retryCounters\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: new Map()\n });\n Object.defineProperty(this, \"getClusterForRequest\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"port\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n this.configureProxy(proxy);\n this.getClusterForRequest = getClusterForRequest;\n this.proxyServer = spdy__WEBPACK_IMPORTED_MODULE_0___default().createServer({\n spdy: {\n plain: true,\n protocols: [\"http/1.1\", \"spdy/3.1\"],\n },\n }, (req, res) => {\n this.handleRequest(req, res);\n });\n this.proxyServer\n .on(\"upgrade\", (req, socket, head) => {\n const isInternal = req.url.startsWith(`${_common_vars__WEBPACK_IMPORTED_MODULE_1__.apiPrefix}?`);\n const cluster = getClusterForRequest(req);\n if (!cluster) {\n _logger__WEBPACK_IMPORTED_MODULE_2__[\"default\"].error(`[LENS-PROXY]: Could not find cluster for upgrade request from url=${req.url}`);\n return socket.destroy();\n }\n const reqHandler = isInternal ? shellApiRequest : kubeApiRequest;\n (async () => reqHandler({ req, socket, head, cluster }))()\n .catch(error => _logger__WEBPACK_IMPORTED_MODULE_2__[\"default\"].error(\"[LENS-PROXY]: failed to handle proxy upgrade\", error));\n });\n }\n /**\n * Starts to listen on an OS provided port. Will reject if the server throws\n * an error.\n *\n * Resolves with the port number that was picked\n */\n attemptToListen() {\n return new Promise((resolve, reject) => {\n this.proxyServer.listen(0, \"127.0.0.1\");\n this.proxyServer\n .once(\"listening\", () => {\n this.proxyServer.removeAllListeners(\"error\"); // don't reject the promise\n const { address, port } = this.proxyServer.address();\n _logger__WEBPACK_IMPORTED_MODULE_2__[\"default\"].info(`[LENS-PROXY]: Proxy server has started at ${address}:${port}`);\n this.proxyServer.on(\"error\", (error) => {\n _logger__WEBPACK_IMPORTED_MODULE_2__[\"default\"].info(`[LENS-PROXY]: Subsequent error: ${error}`);\n });\n this.port = port;\n _common_app_event_bus_event_bus__WEBPACK_IMPORTED_MODULE_4__.appEventBus.emit({ name: \"lens-proxy\", action: \"listen\", params: { port } });\n resolve(port);\n })\n .once(\"error\", (error) => {\n _logger__WEBPACK_IMPORTED_MODULE_2__[\"default\"].info(`[LENS-PROXY]: Proxy server failed to start: ${error}`);\n reject(error);\n });\n });\n }\n /**\n * Starts the lens proxy.\n * @resolves After the server is listening on a good port\n * @rejects if there is an error before that happens\n */\n async listen() {\n var _a;\n const seenPorts = new Set();\n while (true) {\n (_a = this.proxyServer) === null || _a === void 0 ? void 0 : _a.close();\n const port = await this.attemptToListen();\n if (!disallowedPorts.has(port)) {\n // We didn't get a port that would result in an ERR_UNSAFE_PORT error, use it\n return;\n }\n _logger__WEBPACK_IMPORTED_MODULE_2__[\"default\"].warn(`[LENS-PROXY]: Proxy server has with port known to be considered unsafe to connect to by chrome, restarting...`);\n if (seenPorts.has(port)) {\n /**\n * Assume that if we have seen the port before, then the OS has looped\n * through all the ports possible and we will not be able to get a safe\n * port.\n */\n throw new Error(\"Failed to start LensProxy due to seeing too many unsafe ports. Please restart Lens.\");\n }\n else {\n seenPorts.add(port);\n }\n }\n }\n close() {\n _logger__WEBPACK_IMPORTED_MODULE_2__[\"default\"].info(\"[LENS-PROXY]: Closing server\");\n this.proxyServer.close();\n this.closed = true;\n }\n configureProxy(proxy) {\n proxy.on(\"proxyRes\", (proxyRes, req, res) => {\n const retryCounterId = this.getRequestId(req);\n if (this.retryCounters.has(retryCounterId)) {\n this.retryCounters.delete(retryCounterId);\n }\n if (!res.headersSent && req.url) {\n const url = new URL(req.url, \"http://localhost\");\n if (url.searchParams.has(\"watch\")) {\n res.statusCode = proxyRes.statusCode;\n res.flushHeaders();\n }\n }\n proxyRes.on(\"aborted\", () => {\n res.end();\n });\n });\n proxy.on(\"error\", (error, req, res, target) => {\n if (this.closed) {\n return;\n }\n _logger__WEBPACK_IMPORTED_MODULE_2__[\"default\"].error(`[LENS-PROXY]: http proxy errored for cluster: ${error}`, { url: req.url });\n if (target) {\n _logger__WEBPACK_IMPORTED_MODULE_2__[\"default\"].debug(`Failed proxy to target: ${JSON.stringify(target, null, 2)}`);\n if (req.method === \"GET\" && (!res.statusCode || res.statusCode >= 500)) {\n const reqId = this.getRequestId(req);\n const retryCount = this.retryCounters.get(reqId) || 0;\n const timeoutMs = retryCount * 250;\n if (retryCount < 20) {\n _logger__WEBPACK_IMPORTED_MODULE_2__[\"default\"].debug(`Retrying proxy request to url: ${reqId}`);\n setTimeout(() => {\n this.retryCounters.set(reqId, retryCount + 1);\n this.handleRequest(req, res)\n .catch(error => _logger__WEBPACK_IMPORTED_MODULE_2__[\"default\"].error(`[LENS-PROXY]: failed to handle request on proxy error: ${error}`));\n }, timeoutMs);\n }\n }\n }\n try {\n res.writeHead(500).end(`Oops, something went wrong.\\n${error}`);\n }\n catch (e) {\n _logger__WEBPACK_IMPORTED_MODULE_2__[\"default\"].error(`[LENS-PROXY]: Failed to write headers: `, e);\n }\n });\n return proxy;\n }\n async getProxyTarget(req, contextHandler) {\n if (req.url.startsWith(_common_vars__WEBPACK_IMPORTED_MODULE_1__.apiKubePrefix)) {\n delete req.headers.authorization;\n req.url = req.url.replace(_common_vars__WEBPACK_IMPORTED_MODULE_1__.apiKubePrefix, \"\");\n return contextHandler.getApiTarget(isLongRunningRequest(req.url));\n }\n }\n getRequestId(req) {\n return req.headers.host + req.url;\n }\n async handleRequest(req, res) {\n const cluster = this.getClusterForRequest(req);\n if (cluster) {\n const proxyTarget = await this.getProxyTarget(req, cluster.contextHandler);\n if (proxyTarget) {\n return this.proxy.web(req, res, proxyTarget);\n }\n }\n this.router.route(cluster, req, res);\n }\n}\n\n\n//# sourceURL=webpack://open-lens/./src/main/lens-proxy.ts?");
34695
34583
 
34696
34584
  /***/ }),
34697
34585
 
@@ -35186,7 +35074,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
35186
35074
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
35187
35075
 
35188
35076
  "use strict";
35189
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"CronJobTriggerDialog\": () => (/* binding */ CronJobTriggerDialog)\n/* harmony export */ });\n/* harmony import */ var _cronjob_trigger_dialog_scss__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./cronjob-trigger-dialog.scss */ \"./src/renderer/components/+workloads-cronjobs/cronjob-trigger-dialog.scss\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var mobx__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! mobx */ \"./node_modules/mobx/dist/mobx.esm.js\");\n/* harmony import */ var mobx_react__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! mobx-react */ \"./node_modules/mobx-react/dist/mobxreact.esm.js\");\n/* harmony import */ var _dialog__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../dialog */ \"./src/renderer/components/dialog/index.ts\");\n/* harmony import */ var _wizard__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../wizard */ \"./src/renderer/components/wizard/index.ts\");\n/* harmony import */ var _common_k8s_api_endpoints__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../../common/k8s-api/endpoints */ \"./src/common/k8s-api/endpoints/index.ts\");\n/* harmony import */ var _notifications__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../notifications */ \"./src/renderer/components/notifications/index.ts\");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../utils */ \"./src/renderer/utils/index.ts\");\n/* harmony import */ var _input__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../input */ \"./src/renderer/components/input/index.ts\");\n/* harmony import */ var _input_input_validators__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../input/input_validators */ \"./src/renderer/components/input/input_validators.ts\");\n/**\n * Copyright (c) OpenLens Authors. All rights reserved.\n * Licensed under MIT License. See LICENSE in root directory for more information.\n */\nvar __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n 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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (undefined && undefined.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar CronJobTriggerDialog_1;\n\n\n\n\n\n\n\n\n\n\n\nconst dialogState = mobx__WEBPACK_IMPORTED_MODULE_9__.observable.object({\n isOpen: false,\n data: null,\n});\nlet CronJobTriggerDialog = CronJobTriggerDialog_1 = class CronJobTriggerDialog extends react__WEBPACK_IMPORTED_MODULE_1__.Component {\n constructor(props) {\n super(props);\n Object.defineProperty(this, \"jobName\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: \"\"\n });\n Object.defineProperty(this, \"ready\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: false\n });\n Object.defineProperty(this, \"close\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: () => {\n CronJobTriggerDialog_1.close();\n }\n });\n Object.defineProperty(this, \"onOpen\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: async () => {\n const { cronjob } = this;\n this.jobName = cronjob ? `${cronjob.getName()}-manual-${Math.random().toString(36).slice(2, 7)}` : \"\";\n this.jobName = this.jobName.slice(0, 63);\n this.ready = true;\n }\n });\n Object.defineProperty(this, \"onClose\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: () => {\n this.ready = false;\n }\n });\n Object.defineProperty(this, \"trigger\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: async () => {\n const { cronjob } = this;\n const { close } = this;\n try {\n const cronjobDefinition = await _common_k8s_api_endpoints__WEBPACK_IMPORTED_MODULE_4__.cronJobApi.get({\n name: cronjob.getName(),\n namespace: cronjob.getNs(),\n });\n await _common_k8s_api_endpoints__WEBPACK_IMPORTED_MODULE_4__.jobApi.create({\n name: this.jobName,\n namespace: cronjob.getNs(),\n }, {\n spec: cronjobDefinition.spec.jobTemplate.spec,\n metadata: {\n ownerReferences: [{\n apiVersion: cronjob.apiVersion,\n blockOwnerDeletion: true,\n controller: true,\n kind: cronjob.kind,\n name: cronjob.metadata.name,\n uid: cronjob.metadata.uid,\n }],\n },\n });\n close();\n }\n catch (err) {\n _notifications__WEBPACK_IMPORTED_MODULE_5__.Notifications.error(err);\n }\n }\n });\n (0,mobx__WEBPACK_IMPORTED_MODULE_9__.makeObservable)(this);\n }\n static open(cronjob) {\n dialogState.isOpen = true;\n dialogState.data = cronjob;\n }\n static close() {\n dialogState.isOpen = false;\n }\n get cronjob() {\n return dialogState.data;\n }\n renderContents() {\n return (react__WEBPACK_IMPORTED_MODULE_1__.createElement(react__WEBPACK_IMPORTED_MODULE_1__.Fragment, null,\n react__WEBPACK_IMPORTED_MODULE_1__.createElement(\"div\", { className: \"flex gaps\" }, \"Job name:\"),\n react__WEBPACK_IMPORTED_MODULE_1__.createElement(\"div\", { className: \"flex gaps\" },\n react__WEBPACK_IMPORTED_MODULE_1__.createElement(_input__WEBPACK_IMPORTED_MODULE_7__.Input, { required: true, autoFocus: true, placeholder: this.jobName, trim: true, validators: [_input_input_validators__WEBPACK_IMPORTED_MODULE_8__.systemName, _input_input_validators__WEBPACK_IMPORTED_MODULE_8__.maxLength], maxLength: 63, value: this.jobName, onChange: v => this.jobName = v.toLowerCase(), className: \"box grow\" }))));\n }\n render() {\n const { className, ...dialogProps } = this.props;\n const cronjobName = this.cronjob ? this.cronjob.getName() : \"\";\n const header = (react__WEBPACK_IMPORTED_MODULE_1__.createElement(\"h5\", null,\n \"Trigger CronJob \",\n react__WEBPACK_IMPORTED_MODULE_1__.createElement(\"span\", null, cronjobName)));\n return (react__WEBPACK_IMPORTED_MODULE_1__.createElement(_dialog__WEBPACK_IMPORTED_MODULE_2__.Dialog, { ...dialogProps, isOpen: dialogState.isOpen, className: (0,_utils__WEBPACK_IMPORTED_MODULE_6__.cssNames)(\"CronJobTriggerDialog\", className), onOpen: this.onOpen, onClose: this.onClose, close: this.close },\n react__WEBPACK_IMPORTED_MODULE_1__.createElement(_wizard__WEBPACK_IMPORTED_MODULE_3__.Wizard, { header: header, done: this.close },\n react__WEBPACK_IMPORTED_MODULE_1__.createElement(_wizard__WEBPACK_IMPORTED_MODULE_3__.WizardStep, { contentClass: \"flex gaps column\", next: this.trigger, nextLabel: \"Trigger\", disabledNext: !this.ready }, this.renderContents()))));\n }\n};\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_9__.observable,\n __metadata(\"design:type\", Object)\n], CronJobTriggerDialog.prototype, \"jobName\", void 0);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_9__.observable,\n __metadata(\"design:type\", Object)\n], CronJobTriggerDialog.prototype, \"ready\", void 0);\nCronJobTriggerDialog = CronJobTriggerDialog_1 = __decorate([\n mobx_react__WEBPACK_IMPORTED_MODULE_10__.observer,\n __metadata(\"design:paramtypes\", [Object])\n], CronJobTriggerDialog);\n\n\n\n//# sourceURL=webpack://open-lens/./src/renderer/components/+workloads-cronjobs/cronjob-trigger-dialog.tsx?");
35077
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"CronJobTriggerDialog\": () => (/* binding */ CronJobTriggerDialog)\n/* harmony export */ });\n/* harmony import */ var _cronjob_trigger_dialog_scss__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./cronjob-trigger-dialog.scss */ \"./src/renderer/components/+workloads-cronjobs/cronjob-trigger-dialog.scss\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var mobx__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! mobx */ \"./node_modules/mobx/dist/mobx.esm.js\");\n/* harmony import */ var mobx_react__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! mobx-react */ \"./node_modules/mobx-react/dist/mobxreact.esm.js\");\n/* harmony import */ var _dialog__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../dialog */ \"./src/renderer/components/dialog/index.ts\");\n/* harmony import */ var _wizard__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../wizard */ \"./src/renderer/components/wizard/index.ts\");\n/* harmony import */ var _common_k8s_api_endpoints__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../../common/k8s-api/endpoints */ \"./src/common/k8s-api/endpoints/index.ts\");\n/* harmony import */ var _notifications__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../notifications */ \"./src/renderer/components/notifications/index.ts\");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../utils */ \"./src/renderer/utils/index.ts\");\n/* harmony import */ var _input__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../input */ \"./src/renderer/components/input/index.ts\");\n/* harmony import */ var _input_input_validators__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../input/input_validators */ \"./src/renderer/components/input/input_validators.ts\");\n/**\n * Copyright (c) OpenLens Authors. All rights reserved.\n * Licensed under MIT License. See LICENSE in root directory for more information.\n */\nvar __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n 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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (undefined && undefined.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar CronJobTriggerDialog_1;\n\n\n\n\n\n\n\n\n\n\n\nconst dialogState = mobx__WEBPACK_IMPORTED_MODULE_9__.observable.object({\n isOpen: false,\n data: null,\n});\nlet CronJobTriggerDialog = CronJobTriggerDialog_1 = class CronJobTriggerDialog extends react__WEBPACK_IMPORTED_MODULE_1__.Component {\n constructor(props) {\n super(props);\n Object.defineProperty(this, \"jobName\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: \"\"\n });\n Object.defineProperty(this, \"ready\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: false\n });\n Object.defineProperty(this, \"close\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: () => {\n CronJobTriggerDialog_1.close();\n }\n });\n Object.defineProperty(this, \"onOpen\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: async () => {\n const { cronjob } = this;\n this.jobName = cronjob ? `${cronjob.getName()}-manual-${Math.random().toString(36).slice(2, 7)}` : \"\";\n this.jobName = this.jobName.slice(0, 63);\n this.ready = true;\n }\n });\n Object.defineProperty(this, \"onClose\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: () => {\n this.ready = false;\n }\n });\n Object.defineProperty(this, \"trigger\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: async () => {\n const { cronjob } = this;\n const { close } = this;\n try {\n const cronjobDefinition = await _common_k8s_api_endpoints__WEBPACK_IMPORTED_MODULE_4__.cronJobApi.get({\n name: cronjob.getName(),\n namespace: cronjob.getNs(),\n });\n await _common_k8s_api_endpoints__WEBPACK_IMPORTED_MODULE_4__.jobApi.create({\n name: this.jobName,\n namespace: cronjob.getNs(),\n }, {\n spec: cronjobDefinition.spec.jobTemplate.spec,\n metadata: {\n annotations: { \"cronjob.kubernetes.io/instantiate\": \"manual\" },\n ownerReferences: [{\n apiVersion: cronjob.apiVersion,\n blockOwnerDeletion: true,\n controller: true,\n kind: cronjob.kind,\n name: cronjob.metadata.name,\n uid: cronjob.metadata.uid,\n }],\n },\n });\n close();\n }\n catch (err) {\n _notifications__WEBPACK_IMPORTED_MODULE_5__.Notifications.error(err);\n }\n }\n });\n (0,mobx__WEBPACK_IMPORTED_MODULE_9__.makeObservable)(this);\n }\n static open(cronjob) {\n dialogState.isOpen = true;\n dialogState.data = cronjob;\n }\n static close() {\n dialogState.isOpen = false;\n }\n get cronjob() {\n return dialogState.data;\n }\n renderContents() {\n return (react__WEBPACK_IMPORTED_MODULE_1__.createElement(react__WEBPACK_IMPORTED_MODULE_1__.Fragment, null,\n react__WEBPACK_IMPORTED_MODULE_1__.createElement(\"div\", { className: \"flex gaps\" }, \"Job name:\"),\n react__WEBPACK_IMPORTED_MODULE_1__.createElement(\"div\", { className: \"flex gaps\" },\n react__WEBPACK_IMPORTED_MODULE_1__.createElement(_input__WEBPACK_IMPORTED_MODULE_7__.Input, { required: true, autoFocus: true, placeholder: this.jobName, trim: true, validators: [_input_input_validators__WEBPACK_IMPORTED_MODULE_8__.systemName, _input_input_validators__WEBPACK_IMPORTED_MODULE_8__.maxLength], maxLength: 63, value: this.jobName, onChange: v => this.jobName = v.toLowerCase(), className: \"box grow\" }))));\n }\n render() {\n const { className, ...dialogProps } = this.props;\n const cronjobName = this.cronjob ? this.cronjob.getName() : \"\";\n const header = (react__WEBPACK_IMPORTED_MODULE_1__.createElement(\"h5\", null,\n \"Trigger CronJob \",\n react__WEBPACK_IMPORTED_MODULE_1__.createElement(\"span\", null, cronjobName)));\n return (react__WEBPACK_IMPORTED_MODULE_1__.createElement(_dialog__WEBPACK_IMPORTED_MODULE_2__.Dialog, { ...dialogProps, isOpen: dialogState.isOpen, className: (0,_utils__WEBPACK_IMPORTED_MODULE_6__.cssNames)(\"CronJobTriggerDialog\", className), onOpen: this.onOpen, onClose: this.onClose, close: this.close },\n react__WEBPACK_IMPORTED_MODULE_1__.createElement(_wizard__WEBPACK_IMPORTED_MODULE_3__.Wizard, { header: header, done: this.close },\n react__WEBPACK_IMPORTED_MODULE_1__.createElement(_wizard__WEBPACK_IMPORTED_MODULE_3__.WizardStep, { contentClass: \"flex gaps column\", next: this.trigger, nextLabel: \"Trigger\", disabledNext: !this.ready }, this.renderContents()))));\n }\n};\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_9__.observable,\n __metadata(\"design:type\", Object)\n], CronJobTriggerDialog.prototype, \"jobName\", void 0);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_9__.observable,\n __metadata(\"design:type\", Object)\n], CronJobTriggerDialog.prototype, \"ready\", void 0);\nCronJobTriggerDialog = CronJobTriggerDialog_1 = __decorate([\n mobx_react__WEBPACK_IMPORTED_MODULE_10__.observer,\n __metadata(\"design:paramtypes\", [Object])\n], CronJobTriggerDialog);\n\n\n\n//# sourceURL=webpack://open-lens/./src/renderer/components/+workloads-cronjobs/cronjob-trigger-dialog.tsx?");
35190
35078
 
35191
35079
  /***/ }),
35192
35080
 
@@ -36110,7 +35998,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
36110
35998
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
36111
35999
 
36112
36000
  "use strict";
36113
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"ItemListLayoutContent\": () => (/* binding */ ItemListLayoutContent)\n/* harmony export */ });\n/* harmony import */ var _item_list_layout_scss__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./item-list-layout.scss */ \"./src/renderer/components/item-object-list/item-list-layout.scss\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var mobx__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! mobx */ \"./node_modules/mobx/dist/mobx.esm.js\");\n/* harmony import */ var mobx_react__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! mobx-react */ \"./node_modules/mobx-react-lite/es/index.js\");\n/* harmony import */ var mobx_react__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! mobx-react */ \"./node_modules/mobx-react/dist/mobxreact.esm.js\");\n/* harmony import */ var _confirm_dialog__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../confirm-dialog */ \"./src/renderer/components/confirm-dialog/index.ts\");\n/* harmony import */ var _table__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../table */ \"./src/renderer/components/table/index.ts\");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../utils */ \"./src/renderer/utils/index.ts\");\n/* harmony import */ var _add_remove_buttons__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../add-remove-buttons */ \"./src/renderer/components/add-remove-buttons/index.ts\");\n/* harmony import */ var _no_items__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../no-items */ \"./src/renderer/components/no-items/index.ts\");\n/* harmony import */ var _spinner__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../spinner */ \"./src/renderer/components/spinner/index.ts\");\n/* harmony import */ var _page_filters_store__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./page-filters.store */ \"./src/renderer/components/item-object-list/page-filters.store.ts\");\n/* harmony import */ var _theme_store__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../theme.store */ \"./src/renderer/theme.store.ts\");\n/* harmony import */ var _menu_menu_actions__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../menu/menu-actions */ \"./src/renderer/components/menu/menu-actions.tsx\");\n/* harmony import */ var _menu__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../menu */ \"./src/renderer/components/menu/index.ts\");\n/* harmony import */ var _checkbox__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../checkbox */ \"./src/renderer/components/checkbox/index.ts\");\n/* harmony import */ var _common_user_store__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../../../common/user-store */ \"./src/common/user-store/index.ts\");\n/**\n * Copyright (c) OpenLens Authors. All rights reserved.\n * Licensed under MIT License. See LICENSE in root directory for more information.\n */\nvar __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n 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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (undefined && undefined.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nlet ItemListLayoutContent = class ItemListLayoutContent extends react__WEBPACK_IMPORTED_MODULE_1__.Component {\n constructor(props) {\n super(props);\n (0,mobx__WEBPACK_IMPORTED_MODULE_14__.makeObservable)(this);\n }\n get failedToLoad() {\n return this.props.store.failedLoading;\n }\n getRow(uid) {\n return (react__WEBPACK_IMPORTED_MODULE_1__.createElement(\"div\", { key: uid },\n react__WEBPACK_IMPORTED_MODULE_1__.createElement(mobx_react__WEBPACK_IMPORTED_MODULE_15__.Observer, null, () => {\n const { isSelectable, renderTableHeader, renderTableContents, renderItemMenu, store, hasDetailsView, onDetails, copyClassNameFromHeadCells, customizeTableRowProps, detailsItem, } = this.props;\n const { isSelected } = store;\n const item = this.props.getItems().find(item => item.getId() == uid);\n if (!item)\n return null;\n const itemId = item.getId();\n return (react__WEBPACK_IMPORTED_MODULE_1__.createElement(_table__WEBPACK_IMPORTED_MODULE_3__.TableRow, { nowrap: true, searchItem: item, sortItem: item, selected: detailsItem && detailsItem.getId() === itemId, onClick: hasDetailsView ? (0,_utils__WEBPACK_IMPORTED_MODULE_4__.prevDefault)(() => onDetails(item)) : undefined, ...customizeTableRowProps(item) },\n isSelectable && (react__WEBPACK_IMPORTED_MODULE_1__.createElement(_table__WEBPACK_IMPORTED_MODULE_3__.TableCell, { checkbox: true, isChecked: isSelected(item), onClick: (0,_utils__WEBPACK_IMPORTED_MODULE_4__.prevDefault)(() => store.toggleSelection(item)) })),\n renderTableContents(item).map((content, index) => {\n const cellProps = (0,_utils__WEBPACK_IMPORTED_MODULE_4__.isReactNode)(content)\n ? { children: content }\n : content;\n const headCell = renderTableHeader === null || renderTableHeader === void 0 ? void 0 : renderTableHeader[index];\n if (copyClassNameFromHeadCells && headCell) {\n cellProps.className = (0,_utils__WEBPACK_IMPORTED_MODULE_4__.cssNames)(cellProps.className, headCell.className);\n }\n if (!headCell || this.showColumn(headCell)) {\n return react__WEBPACK_IMPORTED_MODULE_1__.createElement(_table__WEBPACK_IMPORTED_MODULE_3__.TableCell, { key: index, ...cellProps });\n }\n return null;\n }),\n renderItemMenu && (react__WEBPACK_IMPORTED_MODULE_1__.createElement(_table__WEBPACK_IMPORTED_MODULE_3__.TableCell, { className: \"menu\" },\n react__WEBPACK_IMPORTED_MODULE_1__.createElement(\"div\", { onClick: _utils__WEBPACK_IMPORTED_MODULE_4__.stopPropagation }, renderItemMenu(item, store))))));\n })));\n }\n removeItemsDialog(selectedItems) {\n const { customizeRemoveDialog, store } = this.props;\n const visibleMaxNamesCount = 5;\n const selectedNames = selectedItems.map(ns => ns.getName()).slice(0, visibleMaxNamesCount).join(\", \");\n const dialogCustomProps = customizeRemoveDialog ? customizeRemoveDialog(selectedItems) : {};\n const selectedCount = selectedItems.length;\n const tailCount = selectedCount > visibleMaxNamesCount\n ? selectedCount - visibleMaxNamesCount\n : 0;\n const tail = tailCount > 0\n ? react__WEBPACK_IMPORTED_MODULE_1__.createElement(react__WEBPACK_IMPORTED_MODULE_1__.Fragment, null,\n \", and \",\n react__WEBPACK_IMPORTED_MODULE_1__.createElement(\"b\", null, tailCount),\n \" more\")\n : null;\n const message = selectedCount <= 1\n ? react__WEBPACK_IMPORTED_MODULE_1__.createElement(\"p\", null,\n \"Remove item \",\n react__WEBPACK_IMPORTED_MODULE_1__.createElement(\"b\", null, selectedNames),\n \"?\")\n : react__WEBPACK_IMPORTED_MODULE_1__.createElement(\"p\", null,\n \"Remove \",\n react__WEBPACK_IMPORTED_MODULE_1__.createElement(\"b\", null, selectedCount),\n \" items \",\n react__WEBPACK_IMPORTED_MODULE_1__.createElement(\"b\", null, selectedNames),\n tail,\n \"?\");\n const onConfirm = store.removeItems\n ? () => store.removeItems(selectedItems)\n : store.removeSelectedItems;\n _confirm_dialog__WEBPACK_IMPORTED_MODULE_2__.ConfirmDialog.open({\n ok: onConfirm,\n labelOk: \"Remove\",\n message,\n ...dialogCustomProps,\n });\n }\n renderNoItems() {\n if (this.failedToLoad) {\n return react__WEBPACK_IMPORTED_MODULE_1__.createElement(_no_items__WEBPACK_IMPORTED_MODULE_6__.NoItems, null, this.props.failedToLoadMessage);\n }\n if (!this.props.getIsReady()) {\n return react__WEBPACK_IMPORTED_MODULE_1__.createElement(_spinner__WEBPACK_IMPORTED_MODULE_7__.Spinner, { center: true });\n }\n if (this.props.getFilters().length > 0) {\n return (react__WEBPACK_IMPORTED_MODULE_1__.createElement(_no_items__WEBPACK_IMPORTED_MODULE_6__.NoItems, null,\n \"No items found.\",\n react__WEBPACK_IMPORTED_MODULE_1__.createElement(\"p\", null,\n react__WEBPACK_IMPORTED_MODULE_1__.createElement(\"a\", { onClick: () => _page_filters_store__WEBPACK_IMPORTED_MODULE_8__.pageFilters.reset(), className: \"contrast\" }, \"Reset filters?\"))));\n }\n return react__WEBPACK_IMPORTED_MODULE_1__.createElement(_no_items__WEBPACK_IMPORTED_MODULE_6__.NoItems, null);\n }\n renderItems() {\n if (this.props.virtual) {\n return null;\n }\n return this.props.getItems().map(item => this.getRow(item.getId()));\n }\n renderTableHeader() {\n const { customizeTableRowProps, renderTableHeader, isSelectable, isConfigurable, store } = this.props;\n if (!renderTableHeader) {\n return null;\n }\n const enabledItems = this.props.getItems().filter(item => !customizeTableRowProps(item).disabled);\n return (react__WEBPACK_IMPORTED_MODULE_1__.createElement(_table__WEBPACK_IMPORTED_MODULE_3__.TableHead, { showTopLine: true, nowrap: true },\n isSelectable && (react__WEBPACK_IMPORTED_MODULE_1__.createElement(mobx_react__WEBPACK_IMPORTED_MODULE_15__.Observer, null, () => (react__WEBPACK_IMPORTED_MODULE_1__.createElement(_table__WEBPACK_IMPORTED_MODULE_3__.TableCell, { checkbox: true, isChecked: store.isSelectedAll(enabledItems), onClick: (0,_utils__WEBPACK_IMPORTED_MODULE_4__.prevDefault)(() => store.toggleSelectionAll(enabledItems)) })))),\n renderTableHeader.map((cellProps, index) => {\n var _a;\n return (this.showColumn(cellProps) && (react__WEBPACK_IMPORTED_MODULE_1__.createElement(_table__WEBPACK_IMPORTED_MODULE_3__.TableCell, { key: (_a = cellProps.id) !== null && _a !== void 0 ? _a : index, ...cellProps })));\n }),\n react__WEBPACK_IMPORTED_MODULE_1__.createElement(_table__WEBPACK_IMPORTED_MODULE_3__.TableCell, { className: \"menu\" }, isConfigurable && this.renderColumnVisibilityMenu())));\n }\n render() {\n const { store, hasDetailsView, addRemoveButtons = {}, virtual, sortingCallbacks, detailsItem, className, tableProps = {}, tableId, getItems, } = this.props;\n const selectedItemId = detailsItem && detailsItem.getId();\n const classNames = (0,_utils__WEBPACK_IMPORTED_MODULE_4__.cssNames)(className, \"box\", \"grow\", _theme_store__WEBPACK_IMPORTED_MODULE_9__.ThemeStore.getInstance().activeTheme.type);\n const items = getItems();\n const selectedItems = store.pickOnlySelected(items);\n return (react__WEBPACK_IMPORTED_MODULE_1__.createElement(\"div\", { className: \"items box grow flex column\" },\n react__WEBPACK_IMPORTED_MODULE_1__.createElement(_table__WEBPACK_IMPORTED_MODULE_3__.Table, { tableId: tableId, virtual: virtual, selectable: hasDetailsView, sortable: sortingCallbacks, getTableRow: this.getRow, items: items, selectedItemId: selectedItemId, noItems: this.renderNoItems(), className: classNames, ...tableProps },\n this.renderTableHeader(),\n this.renderItems()),\n react__WEBPACK_IMPORTED_MODULE_1__.createElement(mobx_react__WEBPACK_IMPORTED_MODULE_15__.Observer, null, () => (react__WEBPACK_IMPORTED_MODULE_1__.createElement(_add_remove_buttons__WEBPACK_IMPORTED_MODULE_5__.AddRemoveButtons, { onRemove: (store.removeItems || store.removeSelectedItems) && selectedItems.length > 0\n ? () => this.removeItemsDialog(selectedItems)\n : null, removeTooltip: `Remove selected items (${selectedItems.length})`, ...addRemoveButtons })))));\n }\n showColumn({ id: columnId, showWithColumn }) {\n const { tableId, isConfigurable } = this.props;\n return !isConfigurable || !_common_user_store__WEBPACK_IMPORTED_MODULE_13__.UserStore.getInstance().isTableColumnHidden(tableId, columnId, showWithColumn);\n }\n renderColumnVisibilityMenu() {\n const { renderTableHeader, tableId } = this.props;\n return (react__WEBPACK_IMPORTED_MODULE_1__.createElement(_menu_menu_actions__WEBPACK_IMPORTED_MODULE_10__.MenuActions, { className: \"ItemListLayoutVisibilityMenu\", toolbar: false, autoCloseOnSelect: false }, renderTableHeader.map((cellProps, index) => {\n var _a;\n return (!cellProps.showWithColumn && (react__WEBPACK_IMPORTED_MODULE_1__.createElement(_menu__WEBPACK_IMPORTED_MODULE_11__.MenuItem, { key: index, className: \"input\" },\n react__WEBPACK_IMPORTED_MODULE_1__.createElement(_checkbox__WEBPACK_IMPORTED_MODULE_12__.Checkbox, { label: (_a = cellProps.title) !== null && _a !== void 0 ? _a : `<${cellProps.className}>`, value: this.showColumn(cellProps), onChange: () => _common_user_store__WEBPACK_IMPORTED_MODULE_13__.UserStore.getInstance().toggleTableColumnVisibility(tableId, cellProps.id) }))));\n })));\n }\n};\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_14__.computed,\n __metadata(\"design:type\", Object),\n __metadata(\"design:paramtypes\", [])\n], ItemListLayoutContent.prototype, \"failedToLoad\", null);\n__decorate([\n _utils__WEBPACK_IMPORTED_MODULE_4__.boundMethod,\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [String]),\n __metadata(\"design:returntype\", void 0)\n], ItemListLayoutContent.prototype, \"getRow\", null);\n__decorate([\n _utils__WEBPACK_IMPORTED_MODULE_4__.boundMethod,\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [Array]),\n __metadata(\"design:returntype\", void 0)\n], ItemListLayoutContent.prototype, \"removeItemsDialog\", null);\nItemListLayoutContent = __decorate([\n mobx_react__WEBPACK_IMPORTED_MODULE_16__.observer,\n __metadata(\"design:paramtypes\", [Object])\n], ItemListLayoutContent);\n\n\n\n//# sourceURL=webpack://open-lens/./src/renderer/components/item-object-list/content.tsx?");
36001
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"ItemListLayoutContent\": () => (/* binding */ ItemListLayoutContent)\n/* harmony export */ });\n/* harmony import */ var _item_list_layout_scss__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./item-list-layout.scss */ \"./src/renderer/components/item-object-list/item-list-layout.scss\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var mobx__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! mobx */ \"./node_modules/mobx/dist/mobx.esm.js\");\n/* harmony import */ var mobx_react__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! mobx-react */ \"./node_modules/mobx-react-lite/es/index.js\");\n/* harmony import */ var mobx_react__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! mobx-react */ \"./node_modules/mobx-react/dist/mobxreact.esm.js\");\n/* harmony import */ var _confirm_dialog__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../confirm-dialog */ \"./src/renderer/components/confirm-dialog/index.ts\");\n/* harmony import */ var _table__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../table */ \"./src/renderer/components/table/index.ts\");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../utils */ \"./src/renderer/utils/index.ts\");\n/* harmony import */ var _add_remove_buttons__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../add-remove-buttons */ \"./src/renderer/components/add-remove-buttons/index.ts\");\n/* harmony import */ var _no_items__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../no-items */ \"./src/renderer/components/no-items/index.ts\");\n/* harmony import */ var _spinner__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../spinner */ \"./src/renderer/components/spinner/index.ts\");\n/* harmony import */ var _page_filters_store__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./page-filters.store */ \"./src/renderer/components/item-object-list/page-filters.store.ts\");\n/* harmony import */ var _theme_store__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../theme.store */ \"./src/renderer/theme.store.ts\");\n/* harmony import */ var _menu_menu_actions__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../menu/menu-actions */ \"./src/renderer/components/menu/menu-actions.tsx\");\n/* harmony import */ var _menu__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../menu */ \"./src/renderer/components/menu/index.ts\");\n/* harmony import */ var _checkbox__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../checkbox */ \"./src/renderer/components/checkbox/index.ts\");\n/* harmony import */ var _common_user_store__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../../../common/user-store */ \"./src/common/user-store/index.ts\");\n/**\n * Copyright (c) OpenLens Authors. All rights reserved.\n * Licensed under MIT License. See LICENSE in root directory for more information.\n */\nvar __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n 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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (undefined && undefined.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nlet ItemListLayoutContent = class ItemListLayoutContent extends react__WEBPACK_IMPORTED_MODULE_1__.Component {\n constructor(props) {\n super(props);\n (0,mobx__WEBPACK_IMPORTED_MODULE_14__.makeObservable)(this);\n }\n get failedToLoad() {\n return this.props.store.failedLoading;\n }\n renderRow(item) {\n return this.getTableRow(item);\n }\n getTableRow(item) {\n const { isSelectable, renderTableHeader, renderTableContents, renderItemMenu, store, hasDetailsView, onDetails, copyClassNameFromHeadCells, customizeTableRowProps, detailsItem, } = this.props;\n const { isSelected } = store;\n return (react__WEBPACK_IMPORTED_MODULE_1__.createElement(_table__WEBPACK_IMPORTED_MODULE_3__.TableRow, { nowrap: true, searchItem: item, sortItem: item, selected: detailsItem && detailsItem.getId() === item.getId(), onClick: hasDetailsView ? (0,_utils__WEBPACK_IMPORTED_MODULE_4__.prevDefault)(() => onDetails(item)) : undefined, ...customizeTableRowProps(item) },\n isSelectable && (react__WEBPACK_IMPORTED_MODULE_1__.createElement(_table__WEBPACK_IMPORTED_MODULE_3__.TableCell, { checkbox: true, isChecked: isSelected(item), onClick: (0,_utils__WEBPACK_IMPORTED_MODULE_4__.prevDefault)(() => store.toggleSelection(item)) })),\n renderTableContents(item).map((content, index) => {\n const cellProps = (0,_utils__WEBPACK_IMPORTED_MODULE_4__.isReactNode)(content)\n ? { children: content }\n : content;\n const headCell = renderTableHeader === null || renderTableHeader === void 0 ? void 0 : renderTableHeader[index];\n if (copyClassNameFromHeadCells && headCell) {\n cellProps.className = (0,_utils__WEBPACK_IMPORTED_MODULE_4__.cssNames)(cellProps.className, headCell.className);\n }\n if (!headCell || this.showColumn(headCell)) {\n return react__WEBPACK_IMPORTED_MODULE_1__.createElement(_table__WEBPACK_IMPORTED_MODULE_3__.TableCell, { key: index, ...cellProps });\n }\n return null;\n }),\n renderItemMenu && (react__WEBPACK_IMPORTED_MODULE_1__.createElement(_table__WEBPACK_IMPORTED_MODULE_3__.TableCell, { className: \"menu\" },\n react__WEBPACK_IMPORTED_MODULE_1__.createElement(\"div\", { onClick: _utils__WEBPACK_IMPORTED_MODULE_4__.stopPropagation }, renderItemMenu(item, store))))));\n }\n getRow(uid) {\n return (react__WEBPACK_IMPORTED_MODULE_1__.createElement(\"div\", { key: uid },\n react__WEBPACK_IMPORTED_MODULE_1__.createElement(mobx_react__WEBPACK_IMPORTED_MODULE_15__.Observer, null, () => {\n const item = this.props.getItems().find(item => item.getId() === uid);\n if (!item)\n return null;\n return this.getTableRow(item);\n })));\n }\n removeItemsDialog(selectedItems) {\n const { customizeRemoveDialog, store } = this.props;\n const visibleMaxNamesCount = 5;\n const selectedNames = selectedItems.map(ns => ns.getName()).slice(0, visibleMaxNamesCount).join(\", \");\n const dialogCustomProps = customizeRemoveDialog ? customizeRemoveDialog(selectedItems) : {};\n const selectedCount = selectedItems.length;\n const tailCount = selectedCount > visibleMaxNamesCount\n ? selectedCount - visibleMaxNamesCount\n : 0;\n const tail = tailCount > 0\n ? react__WEBPACK_IMPORTED_MODULE_1__.createElement(react__WEBPACK_IMPORTED_MODULE_1__.Fragment, null,\n \", and \",\n react__WEBPACK_IMPORTED_MODULE_1__.createElement(\"b\", null, tailCount),\n \" more\")\n : null;\n const message = selectedCount <= 1\n ? react__WEBPACK_IMPORTED_MODULE_1__.createElement(\"p\", null,\n \"Remove item \",\n react__WEBPACK_IMPORTED_MODULE_1__.createElement(\"b\", null, selectedNames),\n \"?\")\n : react__WEBPACK_IMPORTED_MODULE_1__.createElement(\"p\", null,\n \"Remove \",\n react__WEBPACK_IMPORTED_MODULE_1__.createElement(\"b\", null, selectedCount),\n \" items \",\n react__WEBPACK_IMPORTED_MODULE_1__.createElement(\"b\", null, selectedNames),\n tail,\n \"?\");\n const onConfirm = store.removeItems\n ? () => store.removeItems(selectedItems)\n : store.removeSelectedItems;\n _confirm_dialog__WEBPACK_IMPORTED_MODULE_2__.ConfirmDialog.open({\n ok: onConfirm,\n labelOk: \"Remove\",\n message,\n ...dialogCustomProps,\n });\n }\n renderNoItems() {\n if (this.failedToLoad) {\n return react__WEBPACK_IMPORTED_MODULE_1__.createElement(_no_items__WEBPACK_IMPORTED_MODULE_6__.NoItems, null, this.props.failedToLoadMessage);\n }\n if (!this.props.getIsReady()) {\n return react__WEBPACK_IMPORTED_MODULE_1__.createElement(_spinner__WEBPACK_IMPORTED_MODULE_7__.Spinner, { center: true });\n }\n if (this.props.getFilters().length > 0) {\n return (react__WEBPACK_IMPORTED_MODULE_1__.createElement(_no_items__WEBPACK_IMPORTED_MODULE_6__.NoItems, null,\n \"No items found.\",\n react__WEBPACK_IMPORTED_MODULE_1__.createElement(\"p\", null,\n react__WEBPACK_IMPORTED_MODULE_1__.createElement(\"a\", { onClick: () => _page_filters_store__WEBPACK_IMPORTED_MODULE_8__.pageFilters.reset(), className: \"contrast\" }, \"Reset filters?\"))));\n }\n return react__WEBPACK_IMPORTED_MODULE_1__.createElement(_no_items__WEBPACK_IMPORTED_MODULE_6__.NoItems, null);\n }\n renderItems() {\n if (this.props.virtual) {\n return null;\n }\n return this.props.getItems().map(item => this.getRow(item.getId()));\n }\n renderTableHeader() {\n const { customizeTableRowProps, renderTableHeader, isSelectable, isConfigurable, store } = this.props;\n if (!renderTableHeader) {\n return null;\n }\n const enabledItems = this.props.getItems().filter(item => !customizeTableRowProps(item).disabled);\n return (react__WEBPACK_IMPORTED_MODULE_1__.createElement(_table__WEBPACK_IMPORTED_MODULE_3__.TableHead, { showTopLine: true, nowrap: true },\n isSelectable && (react__WEBPACK_IMPORTED_MODULE_1__.createElement(mobx_react__WEBPACK_IMPORTED_MODULE_15__.Observer, null, () => (react__WEBPACK_IMPORTED_MODULE_1__.createElement(_table__WEBPACK_IMPORTED_MODULE_3__.TableCell, { checkbox: true, isChecked: store.isSelectedAll(enabledItems), onClick: (0,_utils__WEBPACK_IMPORTED_MODULE_4__.prevDefault)(() => store.toggleSelectionAll(enabledItems)) })))),\n renderTableHeader.map((cellProps, index) => {\n var _a;\n return (this.showColumn(cellProps) && (react__WEBPACK_IMPORTED_MODULE_1__.createElement(_table__WEBPACK_IMPORTED_MODULE_3__.TableCell, { key: (_a = cellProps.id) !== null && _a !== void 0 ? _a : index, ...cellProps })));\n }),\n react__WEBPACK_IMPORTED_MODULE_1__.createElement(_table__WEBPACK_IMPORTED_MODULE_3__.TableCell, { className: \"menu\" }, isConfigurable && this.renderColumnVisibilityMenu())));\n }\n render() {\n const { store, hasDetailsView, addRemoveButtons = {}, virtual, sortingCallbacks, detailsItem, className, tableProps = {}, tableId, getItems, } = this.props;\n const selectedItemId = detailsItem && detailsItem.getId();\n const classNames = (0,_utils__WEBPACK_IMPORTED_MODULE_4__.cssNames)(className, \"box\", \"grow\", _theme_store__WEBPACK_IMPORTED_MODULE_9__.ThemeStore.getInstance().activeTheme.type);\n const items = getItems();\n const selectedItems = store.pickOnlySelected(items);\n return (react__WEBPACK_IMPORTED_MODULE_1__.createElement(\"div\", { className: \"items box grow flex column\" },\n react__WEBPACK_IMPORTED_MODULE_1__.createElement(_table__WEBPACK_IMPORTED_MODULE_3__.Table, { tableId: tableId, virtual: virtual, selectable: hasDetailsView, sortable: sortingCallbacks, getTableRow: this.getRow, renderRow: virtual ? undefined : this.renderRow, items: items, selectedItemId: selectedItemId, noItems: this.renderNoItems(), className: classNames, ...tableProps },\n this.renderTableHeader(),\n this.renderItems()),\n react__WEBPACK_IMPORTED_MODULE_1__.createElement(mobx_react__WEBPACK_IMPORTED_MODULE_15__.Observer, null, () => (react__WEBPACK_IMPORTED_MODULE_1__.createElement(_add_remove_buttons__WEBPACK_IMPORTED_MODULE_5__.AddRemoveButtons, { onRemove: (store.removeItems || store.removeSelectedItems) && selectedItems.length > 0\n ? () => this.removeItemsDialog(selectedItems)\n : null, removeTooltip: `Remove selected items (${selectedItems.length})`, ...addRemoveButtons })))));\n }\n showColumn({ id: columnId, showWithColumn }) {\n const { tableId, isConfigurable } = this.props;\n return !isConfigurable || !_common_user_store__WEBPACK_IMPORTED_MODULE_13__.UserStore.getInstance().isTableColumnHidden(tableId, columnId, showWithColumn);\n }\n renderColumnVisibilityMenu() {\n const { renderTableHeader, tableId } = this.props;\n return (react__WEBPACK_IMPORTED_MODULE_1__.createElement(_menu_menu_actions__WEBPACK_IMPORTED_MODULE_10__.MenuActions, { className: \"ItemListLayoutVisibilityMenu\", toolbar: false, autoCloseOnSelect: false }, renderTableHeader.map((cellProps, index) => {\n var _a;\n return (!cellProps.showWithColumn && (react__WEBPACK_IMPORTED_MODULE_1__.createElement(_menu__WEBPACK_IMPORTED_MODULE_11__.MenuItem, { key: index, className: \"input\" },\n react__WEBPACK_IMPORTED_MODULE_1__.createElement(_checkbox__WEBPACK_IMPORTED_MODULE_12__.Checkbox, { label: (_a = cellProps.title) !== null && _a !== void 0 ? _a : `<${cellProps.className}>`, value: this.showColumn(cellProps), onChange: () => _common_user_store__WEBPACK_IMPORTED_MODULE_13__.UserStore.getInstance().toggleTableColumnVisibility(tableId, cellProps.id) }))));\n })));\n }\n};\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_14__.computed,\n __metadata(\"design:type\", Object),\n __metadata(\"design:paramtypes\", [])\n], ItemListLayoutContent.prototype, \"failedToLoad\", null);\n__decorate([\n _utils__WEBPACK_IMPORTED_MODULE_4__.boundMethod,\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [Object]),\n __metadata(\"design:returntype\", void 0)\n], ItemListLayoutContent.prototype, \"renderRow\", null);\n__decorate([\n _utils__WEBPACK_IMPORTED_MODULE_4__.boundMethod,\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [String]),\n __metadata(\"design:returntype\", void 0)\n], ItemListLayoutContent.prototype, \"getRow\", null);\n__decorate([\n _utils__WEBPACK_IMPORTED_MODULE_4__.boundMethod,\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [Array]),\n __metadata(\"design:returntype\", void 0)\n], ItemListLayoutContent.prototype, \"removeItemsDialog\", null);\nItemListLayoutContent = __decorate([\n mobx_react__WEBPACK_IMPORTED_MODULE_16__.observer,\n __metadata(\"design:paramtypes\", [Object])\n], ItemListLayoutContent);\n\n\n\n//# sourceURL=webpack://open-lens/./src/renderer/components/item-object-list/content.tsx?");
36114
36002
 
36115
36003
  /***/ }),
36116
36004
 
@@ -36396,7 +36284,29 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
36396
36284
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
36397
36285
 
36398
36286
  "use strict";
36399
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"KubeObjectStatusIcon\": () => (/* binding */ KubeObjectStatusIcon)\n/* harmony export */ });\n/* harmony import */ var _kube_object_status_icon_scss__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./kube-object-status-icon.scss */ \"./src/renderer/components/kube-object-status-icon/kube-object-status-icon.scss\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var _icon__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../icon */ \"./src/renderer/components/icon/index.ts\");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../utils */ \"./src/renderer/utils/index.ts\");\n/* harmony import */ var _extensions_renderer_api_k8s_api__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../..//extensions/renderer-api/k8s-api */ \"./src/extensions/renderer-api/k8s-api.ts\");\n/* harmony import */ var _extensions_registries__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../../extensions/registries */ \"./src/extensions/registries/index.ts\");\n/**\n * Copyright (c) OpenLens Authors. All rights reserved.\n * Licensed under MIT License. See LICENSE in root directory for more information.\n */\n\n\n\n\n\n\nfunction statusClassName(level) {\n switch (level) {\n case _extensions_renderer_api_k8s_api__WEBPACK_IMPORTED_MODULE_4__.KubeObjectStatusLevel.INFO:\n return \"info\";\n case _extensions_renderer_api_k8s_api__WEBPACK_IMPORTED_MODULE_4__.KubeObjectStatusLevel.WARNING:\n return \"warning\";\n case _extensions_renderer_api_k8s_api__WEBPACK_IMPORTED_MODULE_4__.KubeObjectStatusLevel.CRITICAL:\n return \"error\";\n }\n}\nfunction statusTitle(level) {\n switch (level) {\n case _extensions_renderer_api_k8s_api__WEBPACK_IMPORTED_MODULE_4__.KubeObjectStatusLevel.INFO:\n return \"Info\";\n case _extensions_renderer_api_k8s_api__WEBPACK_IMPORTED_MODULE_4__.KubeObjectStatusLevel.WARNING:\n return \"Warning\";\n case _extensions_renderer_api_k8s_api__WEBPACK_IMPORTED_MODULE_4__.KubeObjectStatusLevel.CRITICAL:\n return \"Critical\";\n }\n}\nfunction getAge(timestamp) {\n return timestamp\n ? (0,_utils__WEBPACK_IMPORTED_MODULE_3__.formatDuration)(Date.now() - new Date(timestamp).getTime(), true)\n : \"\";\n}\n/**\n * This function returns the class level for corresponding to the highest status level\n * and the statuses split by their levels.\n * @param src a list of status items\n */\nfunction splitByLevel(src) {\n var _a, _b, _c, _d;\n const parts = new Map(Object.values(_extensions_renderer_api_k8s_api__WEBPACK_IMPORTED_MODULE_4__.KubeObjectStatusLevel).map(v => [v, []]));\n src.forEach(status => parts.get(status.level).push(status));\n const criticals = parts.get(_extensions_renderer_api_k8s_api__WEBPACK_IMPORTED_MODULE_4__.KubeObjectStatusLevel.CRITICAL);\n const warnings = parts.get(_extensions_renderer_api_k8s_api__WEBPACK_IMPORTED_MODULE_4__.KubeObjectStatusLevel.WARNING);\n const infos = parts.get(_extensions_renderer_api_k8s_api__WEBPACK_IMPORTED_MODULE_4__.KubeObjectStatusLevel.INFO);\n const maxLevel = statusClassName((_d = (_b = (_a = criticals[0]) === null || _a === void 0 ? void 0 : _a.level) !== null && _b !== void 0 ? _b : (_c = warnings[0]) === null || _c === void 0 ? void 0 : _c.level) !== null && _d !== void 0 ? _d : infos[0].level);\n return { maxLevel, criticals, warnings, infos };\n}\nclass KubeObjectStatusIcon extends react__WEBPACK_IMPORTED_MODULE_1__.Component {\n renderStatuses(statuses, level) {\n const filteredStatuses = statuses.filter((item) => item.level == level);\n return filteredStatuses.length > 0 && (react__WEBPACK_IMPORTED_MODULE_1__.createElement(\"div\", { className: (0,_utils__WEBPACK_IMPORTED_MODULE_3__.cssNames)(\"level\", statusClassName(level)) },\n react__WEBPACK_IMPORTED_MODULE_1__.createElement(\"span\", { className: \"title\" }, statusTitle(level)),\n filteredStatuses.map((status, index) => (react__WEBPACK_IMPORTED_MODULE_1__.createElement(\"div\", { key: `kube-resource-status-${level}-${index}`, className: (0,_utils__WEBPACK_IMPORTED_MODULE_3__.cssNames)(\"status\", \"msg\") },\n \"- \",\n status.text,\n \" \",\n react__WEBPACK_IMPORTED_MODULE_1__.createElement(\"span\", { className: \"age\" },\n \" \\u00B7 \",\n getAge(status.timestamp)))))));\n }\n render() {\n const statuses = _extensions_registries__WEBPACK_IMPORTED_MODULE_5__.KubeObjectStatusRegistry.getInstance().getItemsForObject(this.props.object);\n if (statuses.length === 0) {\n return null;\n }\n const { maxLevel, criticals, warnings, infos } = splitByLevel(statuses);\n return (react__WEBPACK_IMPORTED_MODULE_1__.createElement(_icon__WEBPACK_IMPORTED_MODULE_2__.Icon, { material: maxLevel, className: (0,_utils__WEBPACK_IMPORTED_MODULE_3__.cssNames)(\"KubeObjectStatusIcon\", maxLevel), tooltip: {\n children: (react__WEBPACK_IMPORTED_MODULE_1__.createElement(\"div\", { className: \"KubeObjectStatusTooltip\" },\n this.renderStatuses(criticals, _extensions_renderer_api_k8s_api__WEBPACK_IMPORTED_MODULE_4__.KubeObjectStatusLevel.CRITICAL),\n this.renderStatuses(warnings, _extensions_renderer_api_k8s_api__WEBPACK_IMPORTED_MODULE_4__.KubeObjectStatusLevel.WARNING),\n this.renderStatuses(infos, _extensions_renderer_api_k8s_api__WEBPACK_IMPORTED_MODULE_4__.KubeObjectStatusLevel.INFO))),\n } }));\n }\n}\n\n\n//# sourceURL=webpack://open-lens/./src/renderer/components/kube-object-status-icon/kube-object-status-icon.tsx?");
36287
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"KubeObjectStatusIcon\": () => (/* binding */ KubeObjectStatusIcon)\n/* harmony export */ });\n/* harmony import */ var _kube_object_status_icon_scss__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./kube-object-status-icon.scss */ \"./src/renderer/components/kube-object-status-icon/kube-object-status-icon.scss\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var _icon__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../icon */ \"./src/renderer/components/icon/index.ts\");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../utils */ \"./src/renderer/utils/index.ts\");\n/* harmony import */ var _extensions_renderer_api_k8s_api__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../..//extensions/renderer-api/k8s-api */ \"./src/extensions/renderer-api/k8s-api.ts\");\n/* harmony import */ var _ogre_tools_injectable_react__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @ogre-tools/injectable-react */ \"./node_modules/@ogre-tools/injectable-react/build/index.js\");\n/* harmony import */ var _ogre_tools_injectable_react__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_ogre_tools_injectable_react__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _statuses_for_kube_object_injectable__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./statuses-for-kube-object.injectable */ \"./src/renderer/components/kube-object-status-icon/statuses-for-kube-object.injectable.ts\");\n/**\n * Copyright (c) OpenLens Authors. All rights reserved.\n * Licensed under MIT License. See LICENSE in root directory for more information.\n */\n\n\n\n\n\n\n\nfunction statusClassName(level) {\n switch (level) {\n case _extensions_renderer_api_k8s_api__WEBPACK_IMPORTED_MODULE_4__.KubeObjectStatusLevel.INFO:\n return \"info\";\n case _extensions_renderer_api_k8s_api__WEBPACK_IMPORTED_MODULE_4__.KubeObjectStatusLevel.WARNING:\n return \"warning\";\n case _extensions_renderer_api_k8s_api__WEBPACK_IMPORTED_MODULE_4__.KubeObjectStatusLevel.CRITICAL:\n return \"error\";\n }\n}\nfunction statusTitle(level) {\n switch (level) {\n case _extensions_renderer_api_k8s_api__WEBPACK_IMPORTED_MODULE_4__.KubeObjectStatusLevel.INFO:\n return \"Info\";\n case _extensions_renderer_api_k8s_api__WEBPACK_IMPORTED_MODULE_4__.KubeObjectStatusLevel.WARNING:\n return \"Warning\";\n case _extensions_renderer_api_k8s_api__WEBPACK_IMPORTED_MODULE_4__.KubeObjectStatusLevel.CRITICAL:\n return \"Critical\";\n }\n}\nfunction getAge(timestamp) {\n return timestamp\n ? (0,_utils__WEBPACK_IMPORTED_MODULE_3__.formatDuration)(Date.now() - new Date(timestamp).getTime(), true)\n : \"\";\n}\n/**\n * This function returns the class level for corresponding to the highest status level\n * and the statuses split by their levels.\n * @param src a list of status items\n */\nfunction splitByLevel(src) {\n var _a, _b, _c, _d;\n const parts = new Map(Object.values(_extensions_renderer_api_k8s_api__WEBPACK_IMPORTED_MODULE_4__.KubeObjectStatusLevel).map(v => [v, []]));\n src.forEach(status => parts.get(status.level).push(status));\n const criticals = parts.get(_extensions_renderer_api_k8s_api__WEBPACK_IMPORTED_MODULE_4__.KubeObjectStatusLevel.CRITICAL);\n const warnings = parts.get(_extensions_renderer_api_k8s_api__WEBPACK_IMPORTED_MODULE_4__.KubeObjectStatusLevel.WARNING);\n const infos = parts.get(_extensions_renderer_api_k8s_api__WEBPACK_IMPORTED_MODULE_4__.KubeObjectStatusLevel.INFO);\n const maxLevel = statusClassName((_d = (_b = (_a = criticals[0]) === null || _a === void 0 ? void 0 : _a.level) !== null && _b !== void 0 ? _b : (_c = warnings[0]) === null || _c === void 0 ? void 0 : _c.level) !== null && _d !== void 0 ? _d : infos[0].level);\n return { maxLevel, criticals, warnings, infos };\n}\nclass NonInjectedKubeObjectStatusIcon extends react__WEBPACK_IMPORTED_MODULE_1__.Component {\n renderStatuses(statuses, level) {\n const filteredStatuses = statuses.filter((item) => item.level == level);\n return filteredStatuses.length > 0 && (react__WEBPACK_IMPORTED_MODULE_1__.createElement(\"div\", { className: (0,_utils__WEBPACK_IMPORTED_MODULE_3__.cssNames)(\"level\", statusClassName(level)) },\n react__WEBPACK_IMPORTED_MODULE_1__.createElement(\"span\", { className: \"title\" }, statusTitle(level)),\n filteredStatuses.map((status, index) => (react__WEBPACK_IMPORTED_MODULE_1__.createElement(\"div\", { key: `kube-resource-status-${level}-${index}`, className: (0,_utils__WEBPACK_IMPORTED_MODULE_3__.cssNames)(\"status\", \"msg\") },\n \"- \",\n status.text,\n \" \",\n react__WEBPACK_IMPORTED_MODULE_1__.createElement(\"span\", { className: \"age\" },\n \" \\u00B7 \",\n getAge(status.timestamp)))))));\n }\n render() {\n const statuses = this.props.statuses;\n if (statuses.length === 0) {\n return null;\n }\n const { maxLevel, criticals, warnings, infos } = splitByLevel(statuses);\n return (react__WEBPACK_IMPORTED_MODULE_1__.createElement(_icon__WEBPACK_IMPORTED_MODULE_2__.Icon, { material: maxLevel, className: (0,_utils__WEBPACK_IMPORTED_MODULE_3__.cssNames)(\"KubeObjectStatusIcon\", maxLevel), tooltip: {\n children: (react__WEBPACK_IMPORTED_MODULE_1__.createElement(\"div\", { className: \"KubeObjectStatusTooltip\" },\n this.renderStatuses(criticals, _extensions_renderer_api_k8s_api__WEBPACK_IMPORTED_MODULE_4__.KubeObjectStatusLevel.CRITICAL),\n this.renderStatuses(warnings, _extensions_renderer_api_k8s_api__WEBPACK_IMPORTED_MODULE_4__.KubeObjectStatusLevel.WARNING),\n this.renderStatuses(infos, _extensions_renderer_api_k8s_api__WEBPACK_IMPORTED_MODULE_4__.KubeObjectStatusLevel.INFO))),\n } }));\n }\n}\nconst KubeObjectStatusIcon = (0,_ogre_tools_injectable_react__WEBPACK_IMPORTED_MODULE_5__.withInjectables)(NonInjectedKubeObjectStatusIcon, {\n getProps: (di, props) => ({\n statuses: di.inject(_statuses_for_kube_object_injectable__WEBPACK_IMPORTED_MODULE_6__[\"default\"], props.object),\n ...props,\n }),\n});\n\n\n//# sourceURL=webpack://open-lens/./src/renderer/components/kube-object-status-icon/kube-object-status-icon.tsx?");
36288
+
36289
+ /***/ }),
36290
+
36291
+ /***/ "./src/renderer/components/kube-object-status-icon/status-registrations.injectable.ts":
36292
+ /*!********************************************************************************************!*\
36293
+ !*** ./src/renderer/components/kube-object-status-icon/status-registrations.injectable.ts ***!
36294
+ \********************************************************************************************/
36295
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
36296
+
36297
+ "use strict";
36298
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _ogre_tools_injectable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @ogre-tools/injectable */ \"./node_modules/@ogre-tools/injectable/build/index.js\");\n/* harmony import */ var _ogre_tools_injectable__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_ogre_tools_injectable__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var mobx__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! mobx */ \"./node_modules/mobx/dist/mobx.esm.js\");\n/* harmony import */ var _extensions_renderer_extensions_injectable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../extensions/renderer-extensions.injectable */ \"./src/extensions/renderer-extensions.injectable.ts\");\n/**\n * Copyright (c) OpenLens Authors. All rights reserved.\n * Licensed under MIT License. See LICENSE in root directory for more information.\n */\n\n\n\nconst statusRegistrationsInjectable = (0,_ogre_tools_injectable__WEBPACK_IMPORTED_MODULE_0__.getInjectable)({\n id: \"status-registrations\",\n instantiate: (di) => {\n const extensions = di.inject(_extensions_renderer_extensions_injectable__WEBPACK_IMPORTED_MODULE_1__[\"default\"]);\n return (0,mobx__WEBPACK_IMPORTED_MODULE_2__.computed)(() => extensions.get().flatMap((extension) => extension.kubeObjectStatusTexts));\n },\n lifecycle: _ogre_tools_injectable__WEBPACK_IMPORTED_MODULE_0__.lifecycleEnum.singleton,\n});\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (statusRegistrationsInjectable);\n\n\n//# sourceURL=webpack://open-lens/./src/renderer/components/kube-object-status-icon/status-registrations.injectable.ts?");
36299
+
36300
+ /***/ }),
36301
+
36302
+ /***/ "./src/renderer/components/kube-object-status-icon/statuses-for-kube-object.injectable.ts":
36303
+ /*!************************************************************************************************!*\
36304
+ !*** ./src/renderer/components/kube-object-status-icon/statuses-for-kube-object.injectable.ts ***!
36305
+ \************************************************************************************************/
36306
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
36307
+
36308
+ "use strict";
36309
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _ogre_tools_injectable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @ogre-tools/injectable */ \"./node_modules/@ogre-tools/injectable/build/index.js\");\n/* harmony import */ var _ogre_tools_injectable__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_ogre_tools_injectable__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _status_registrations_injectable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./status-registrations.injectable */ \"./src/renderer/components/kube-object-status-icon/status-registrations.injectable.ts\");\n/* harmony import */ var lodash_fp__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! lodash/fp */ \"./node_modules/lodash/fp.js\");\n/* harmony import */ var lodash_fp__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(lodash_fp__WEBPACK_IMPORTED_MODULE_2__);\n/**\n * Copyright (c) OpenLens Authors. All rights reserved.\n * Licensed under MIT License. See LICENSE in root directory for more information.\n */\n\n\n\nconst statusesForKubeObjectInjectable = (0,_ogre_tools_injectable__WEBPACK_IMPORTED_MODULE_0__.getInjectable)({\n id: \"statuses-for-kube-object\",\n instantiate: (di, kubeObject) => di\n .inject(_status_registrations_injectable__WEBPACK_IMPORTED_MODULE_1__[\"default\"])\n .get()\n .filter(toKubeObjectRelated(kubeObject))\n .map(toStatus(kubeObject))\n .filter(Boolean),\n lifecycle: _ogre_tools_injectable__WEBPACK_IMPORTED_MODULE_0__.lifecycleEnum.transient,\n});\nconst toKubeObjectRelated = (kubeObject) => (0,lodash_fp__WEBPACK_IMPORTED_MODULE_2__.conforms)({\n kind: (0,lodash_fp__WEBPACK_IMPORTED_MODULE_2__.eq)(kubeObject.kind),\n apiVersions: (0,lodash_fp__WEBPACK_IMPORTED_MODULE_2__.includes)(kubeObject.apiVersion),\n});\nconst toStatus = (kubeObject) => (item) => item.resolve(kubeObject);\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (statusesForKubeObjectInjectable);\n\n\n//# sourceURL=webpack://open-lens/./src/renderer/components/kube-object-status-icon/statuses-for-kube-object.injectable.ts?");
36400
36310
 
36401
36311
  /***/ }),
36402
36312
 
@@ -36759,7 +36669,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
36759
36669
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
36760
36670
 
36761
36671
  "use strict";
36762
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"Select\": () => (/* binding */ Select)\n/* harmony export */ });\n/* harmony import */ var _select_scss__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./select.scss */ \"./src/renderer/components/select/select.scss\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var mobx__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! mobx */ \"./node_modules/mobx/dist/mobx.esm.js\");\n/* harmony import */ var mobx_react__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! mobx-react */ \"./node_modules/mobx-react/dist/mobxreact.esm.js\");\n/* harmony import */ var react_select__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! react-select */ \"./node_modules/react-select/dist/index-75b02bac.browser.esm.js\");\n/* harmony import */ var react_select__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! react-select */ \"./node_modules/react-select/dist/react-select.browser.esm.js\");\n/* harmony import */ var react_select_creatable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react-select/creatable */ \"./node_modules/react-select/creatable/dist/react-select.browser.esm.js\");\n/* harmony import */ var _theme_store__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../theme.store */ \"./src/renderer/theme.store.ts\");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../utils */ \"./src/renderer/utils/index.ts\");\n/**\n * Copyright (c) OpenLens Authors. All rights reserved.\n * Licensed under MIT License. See LICENSE in root directory for more information.\n */\nvar __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n 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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (undefined && undefined.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\n// Wrapper for \"react-select\" component\n// API docs: https://react-select.com/\n\n\n\n\n\n\n\n\nconst { Menu } = react_select__WEBPACK_IMPORTED_MODULE_5__.F;\nlet Select = class Select extends react__WEBPACK_IMPORTED_MODULE_1__.Component {\n constructor(props) {\n super(props);\n Object.defineProperty(this, \"styles\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: {\n menuPortal: styles => ({\n ...styles,\n zIndex: \"auto\",\n }),\n }\n });\n (0,mobx__WEBPACK_IMPORTED_MODULE_6__.makeObservable)(this);\n }\n get themeClass() {\n const themeName = this.props.themeName || _theme_store__WEBPACK_IMPORTED_MODULE_3__.ThemeStore.getInstance().activeTheme.type;\n return `theme-${themeName}`;\n }\n isValidOption(opt) {\n return typeof opt === \"object\" && opt.value !== undefined;\n }\n get selectedOption() {\n const { value, isMulti } = this.props;\n if (isMulti) {\n return this.options.filter(opt => {\n const values = value ? [].concat(value) : [];\n return values.includes(opt) || values.includes(opt.value);\n });\n }\n return this.options.find(opt => opt === value || opt.value === value);\n }\n get options() {\n const { autoConvertOptions, options } = this.props;\n if (autoConvertOptions && Array.isArray(options)) {\n return options.map(opt => {\n return this.isValidOption(opt) ? opt : { value: opt, label: String(opt) };\n });\n }\n return options;\n }\n onChange(value, meta) {\n if (this.props.onChange) {\n this.props.onChange(value, meta);\n }\n }\n onKeyDown(evt) {\n if (this.props.onKeyDown) {\n this.props.onKeyDown(evt);\n }\n const escapeKey = evt.nativeEvent.code === \"Escape\";\n if (escapeKey)\n evt.stopPropagation(); // don't close the <Dialog/>\n }\n render() {\n var _a;\n const { className, menuClass, isCreatable, autoConvertOptions, value, options, components = {}, ...props } = this.props;\n const WrappedMenu = (_a = components.Menu) !== null && _a !== void 0 ? _a : Menu;\n const selectProps = {\n ...props,\n styles: this.styles,\n value: autoConvertOptions ? this.selectedOption : value,\n options: autoConvertOptions ? this.options : options,\n onChange: this.onChange,\n onKeyDown: this.onKeyDown,\n className: (0,_utils__WEBPACK_IMPORTED_MODULE_4__.cssNames)(\"Select\", this.themeClass, className),\n classNamePrefix: \"Select\",\n components: {\n ...components,\n Menu: props => (react__WEBPACK_IMPORTED_MODULE_1__.createElement(WrappedMenu, { ...props, className: (0,_utils__WEBPACK_IMPORTED_MODULE_4__.cssNames)(menuClass, this.themeClass, props.className) })),\n },\n };\n return isCreatable\n ? react__WEBPACK_IMPORTED_MODULE_1__.createElement(react_select_creatable__WEBPACK_IMPORTED_MODULE_2__[\"default\"], { ...selectProps })\n : react__WEBPACK_IMPORTED_MODULE_1__.createElement(react_select__WEBPACK_IMPORTED_MODULE_7__[\"default\"], { ...selectProps });\n }\n};\nObject.defineProperty(Select, \"defaultProps\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: {\n autoConvertOptions: true,\n menuPortalTarget: document.body,\n menuPlacement: \"auto\",\n }\n});\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_6__.computed,\n __metadata(\"design:type\", Object),\n __metadata(\"design:paramtypes\", [])\n], Select.prototype, \"themeClass\", null);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_6__.computed,\n __metadata(\"design:type\", Object),\n __metadata(\"design:paramtypes\", [])\n], Select.prototype, \"selectedOption\", null);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_6__.computed,\n __metadata(\"design:type\", Array),\n __metadata(\"design:paramtypes\", [])\n], Select.prototype, \"options\", null);\n__decorate([\n _utils__WEBPACK_IMPORTED_MODULE_4__.boundMethod,\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [Object, Object]),\n __metadata(\"design:returntype\", void 0)\n], Select.prototype, \"onChange\", null);\n__decorate([\n _utils__WEBPACK_IMPORTED_MODULE_4__.boundMethod,\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [Object]),\n __metadata(\"design:returntype\", void 0)\n], Select.prototype, \"onKeyDown\", null);\nSelect = __decorate([\n mobx_react__WEBPACK_IMPORTED_MODULE_8__.observer,\n __metadata(\"design:paramtypes\", [Object])\n], Select);\n\n\n\n//# sourceURL=webpack://open-lens/./src/renderer/components/select/select.tsx?");
36672
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"Select\": () => (/* binding */ Select)\n/* harmony export */ });\n/* harmony import */ var _select_scss__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./select.scss */ \"./src/renderer/components/select/select.scss\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var mobx__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! mobx */ \"./node_modules/mobx/dist/mobx.esm.js\");\n/* harmony import */ var mobx_react__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! mobx-react */ \"./node_modules/mobx-react/dist/mobxreact.esm.js\");\n/* harmony import */ var react_select__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! react-select */ \"./node_modules/react-select/dist/index-75b02bac.browser.esm.js\");\n/* harmony import */ var react_select__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! react-select */ \"./node_modules/react-select/dist/react-select.browser.esm.js\");\n/* harmony import */ var react_select_creatable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react-select/creatable */ \"./node_modules/react-select/creatable/dist/react-select.browser.esm.js\");\n/* harmony import */ var _theme_store__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../theme.store */ \"./src/renderer/theme.store.ts\");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../utils */ \"./src/renderer/utils/index.ts\");\n/**\n * Copyright (c) OpenLens Authors. All rights reserved.\n * Licensed under MIT License. See LICENSE in root directory for more information.\n */\nvar __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n 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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (undefined && undefined.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\n// Wrapper for \"react-select\" component\n// API docs: https://react-select.com/\n\n\n\n\n\n\n\n\nconst { Menu } = react_select__WEBPACK_IMPORTED_MODULE_5__.F;\nlet Select = class Select extends react__WEBPACK_IMPORTED_MODULE_1__.Component {\n constructor(props) {\n super(props);\n Object.defineProperty(this, \"styles\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: {\n menuPortal: styles => ({\n ...styles,\n zIndex: \"auto\",\n }),\n }\n });\n (0,mobx__WEBPACK_IMPORTED_MODULE_6__.makeObservable)(this);\n }\n get themeClass() {\n const themeName = this.props.themeName || _theme_store__WEBPACK_IMPORTED_MODULE_3__.ThemeStore.getInstance().activeTheme.type;\n return `theme-${themeName}`;\n }\n isValidOption(opt) {\n return typeof opt === \"object\" && opt.value !== undefined;\n }\n get selectedOption() {\n const { value, isMulti } = this.props;\n if (isMulti) {\n return this.options.filter(opt => {\n const values = value ? [].concat(value) : [];\n return values.includes(opt) || values.includes(opt.value);\n });\n }\n return this.options.find(opt => opt === value || opt.value === value) || null;\n }\n get options() {\n const { autoConvertOptions, options } = this.props;\n if (autoConvertOptions && Array.isArray(options)) {\n return options.map(opt => {\n return this.isValidOption(opt) ? opt : { value: opt, label: String(opt) };\n });\n }\n return options;\n }\n onChange(value, meta) {\n if (this.props.onChange) {\n this.props.onChange(value, meta);\n }\n }\n onKeyDown(evt) {\n if (this.props.onKeyDown) {\n this.props.onKeyDown(evt);\n }\n const escapeKey = evt.nativeEvent.code === \"Escape\";\n if (escapeKey)\n evt.stopPropagation(); // don't close the <Dialog/>\n }\n render() {\n var _a;\n const { className, menuClass, isCreatable, autoConvertOptions, value, options, components = {}, ...props } = this.props;\n const WrappedMenu = (_a = components.Menu) !== null && _a !== void 0 ? _a : Menu;\n const selectProps = {\n ...props,\n styles: this.styles,\n value: autoConvertOptions ? this.selectedOption : value,\n options: autoConvertOptions ? this.options : options,\n onChange: this.onChange,\n onKeyDown: this.onKeyDown,\n className: (0,_utils__WEBPACK_IMPORTED_MODULE_4__.cssNames)(\"Select\", this.themeClass, className),\n classNamePrefix: \"Select\",\n components: {\n ...components,\n Menu: props => (react__WEBPACK_IMPORTED_MODULE_1__.createElement(WrappedMenu, { ...props, className: (0,_utils__WEBPACK_IMPORTED_MODULE_4__.cssNames)(menuClass, this.themeClass, props.className) })),\n },\n };\n return isCreatable\n ? react__WEBPACK_IMPORTED_MODULE_1__.createElement(react_select_creatable__WEBPACK_IMPORTED_MODULE_2__[\"default\"], { ...selectProps })\n : react__WEBPACK_IMPORTED_MODULE_1__.createElement(react_select__WEBPACK_IMPORTED_MODULE_7__[\"default\"], { ...selectProps });\n }\n};\nObject.defineProperty(Select, \"defaultProps\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: {\n autoConvertOptions: true,\n menuPortalTarget: document.body,\n menuPlacement: \"auto\",\n }\n});\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_6__.computed,\n __metadata(\"design:type\", Object),\n __metadata(\"design:paramtypes\", [])\n], Select.prototype, \"themeClass\", null);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_6__.computed,\n __metadata(\"design:type\", Object),\n __metadata(\"design:paramtypes\", [])\n], Select.prototype, \"selectedOption\", null);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_6__.computed,\n __metadata(\"design:type\", Array),\n __metadata(\"design:paramtypes\", [])\n], Select.prototype, \"options\", null);\n__decorate([\n _utils__WEBPACK_IMPORTED_MODULE_4__.boundMethod,\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [Object, Object]),\n __metadata(\"design:returntype\", void 0)\n], Select.prototype, \"onChange\", null);\n__decorate([\n _utils__WEBPACK_IMPORTED_MODULE_4__.boundMethod,\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [Object]),\n __metadata(\"design:returntype\", void 0)\n], Select.prototype, \"onKeyDown\", null);\nSelect = __decorate([\n mobx_react__WEBPACK_IMPORTED_MODULE_8__.observer,\n __metadata(\"design:paramtypes\", [Object])\n], Select);\n\n\n\n//# sourceURL=webpack://open-lens/./src/renderer/components/select/select.tsx?");
36763
36673
 
36764
36674
  /***/ }),
36765
36675
 
@@ -37188,7 +37098,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
37188
37098
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
37189
37099
 
37190
37100
  "use strict";
37191
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"ThemeStore\": () => (/* binding */ ThemeStore)\n/* harmony export */ });\n/* harmony import */ var mobx__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! mobx */ \"./node_modules/mobx/dist/mobx.esm.js\");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./utils */ \"./src/renderer/utils/index.ts\");\n/* harmony import */ var _common_user_store__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../common/user-store */ \"./src/common/user-store/index.ts\");\n/* harmony import */ var _main_logger__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../main/logger */ \"./src/main/logger.ts\");\n/* harmony import */ var _themes_lens_dark_json__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./themes/lens-dark.json */ \"./src/renderer/themes/lens-dark.json\");\n/* harmony import */ var _themes_lens_light_json__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./themes/lens-light.json */ \"./src/renderer/themes/lens-light.json\");\n/* harmony import */ var _common_vars__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../common/vars */ \"./src/common/vars.ts\");\n/* harmony import */ var lodash__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! lodash */ \"./node_modules/lodash/lodash.js\");\n/* harmony import */ var lodash__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(lodash__WEBPACK_IMPORTED_MODULE_6__);\n/**\n * Copyright (c) OpenLens Authors. All rights reserved.\n * Licensed under MIT License. See LICENSE in root directory for more information.\n */\nvar __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n 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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (undefined && undefined.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\n\n\n\n\n\n\n\n\nclass ThemeStore extends _utils__WEBPACK_IMPORTED_MODULE_0__.Singleton {\n constructor() {\n super();\n Object.defineProperty(this, \"terminalColorPrefix\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: \"terminal\"\n });\n // bundled themes from `themes/${themeId}.json`\n Object.defineProperty(this, \"themes\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: mobx__WEBPACK_IMPORTED_MODULE_7__.observable.map({\n \"lens-dark\": _themes_lens_dark_json__WEBPACK_IMPORTED_MODULE_3__,\n \"lens-light\": _themes_lens_light_json__WEBPACK_IMPORTED_MODULE_4__,\n })\n });\n (0,mobx__WEBPACK_IMPORTED_MODULE_7__.makeObservable)(this);\n (0,_utils__WEBPACK_IMPORTED_MODULE_0__.autoBind)(this);\n // auto-apply active theme\n (0,mobx__WEBPACK_IMPORTED_MODULE_7__.reaction)(() => ({\n themeId: this.activeThemeId,\n terminalThemeId: this.terminalThemeId,\n }), ({ themeId }) => {\n try {\n this.applyTheme(themeId);\n }\n catch (err) {\n _main_logger__WEBPACK_IMPORTED_MODULE_2__[\"default\"].error(err);\n _common_user_store__WEBPACK_IMPORTED_MODULE_1__.UserStore.getInstance().resetTheme();\n }\n }, {\n fireImmediately: true,\n equals: mobx__WEBPACK_IMPORTED_MODULE_7__.comparer.shallow,\n });\n }\n get activeThemeId() {\n return _common_user_store__WEBPACK_IMPORTED_MODULE_1__.UserStore.getInstance().colorTheme;\n }\n get terminalThemeId() {\n return _common_user_store__WEBPACK_IMPORTED_MODULE_1__.UserStore.getInstance().terminalTheme;\n }\n get activeTheme() {\n var _a;\n return (_a = this.themes.get(this.activeThemeId)) !== null && _a !== void 0 ? _a : this.themes.get(_common_vars__WEBPACK_IMPORTED_MODULE_5__.defaultTheme);\n }\n get terminalColors() {\n var _a;\n const theme = (_a = this.themes.get(this.terminalThemeId)) !== null && _a !== void 0 ? _a : this.activeTheme;\n return Object\n .entries(theme.colors)\n .filter(([name]) => name.startsWith(this.terminalColorPrefix));\n }\n // Replacing keys stored in styles to format accepted by terminal\n // E.g. terminalBrightBlack -> brightBlack\n get xtermColors() {\n return Object.fromEntries(this.terminalColors.map(([name, color]) => [\n (0,lodash__WEBPACK_IMPORTED_MODULE_6__.camelCase)(name.replace(this.terminalColorPrefix, \"\")),\n color,\n ]));\n }\n get themeOptions() {\n return Array.from(this.themes).map(([themeId, theme]) => ({\n label: theme.name,\n value: themeId,\n }));\n }\n getThemeById(themeId) {\n return this.themes.get(themeId);\n }\n applyTheme(themeId) {\n const theme = this.getThemeById(themeId);\n const colors = Object.entries({\n ...theme.colors,\n ...Object.fromEntries(this.terminalColors),\n });\n colors.forEach(([name, value]) => {\n document.documentElement.style.setProperty(`--${name}`, value);\n });\n // Adding universal theme flag which can be used in component styles\n document.body.classList.toggle(\"theme-light\", theme.type === \"light\");\n }\n}\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_7__.computed,\n __metadata(\"design:type\", String),\n __metadata(\"design:paramtypes\", [])\n], ThemeStore.prototype, \"activeThemeId\", null);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_7__.computed,\n __metadata(\"design:type\", String),\n __metadata(\"design:paramtypes\", [])\n], ThemeStore.prototype, \"terminalThemeId\", null);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_7__.computed,\n __metadata(\"design:type\", Object),\n __metadata(\"design:paramtypes\", [])\n], ThemeStore.prototype, \"activeTheme\", null);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_7__.computed,\n __metadata(\"design:type\", Array),\n __metadata(\"design:paramtypes\", [])\n], ThemeStore.prototype, \"terminalColors\", null);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_7__.computed,\n __metadata(\"design:type\", Object),\n __metadata(\"design:paramtypes\", [])\n], ThemeStore.prototype, \"xtermColors\", null);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_7__.computed,\n __metadata(\"design:type\", Array),\n __metadata(\"design:paramtypes\", [])\n], ThemeStore.prototype, \"themeOptions\", null);\n\n\n//# sourceURL=webpack://open-lens/./src/renderer/theme.store.ts?");
37101
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"ThemeStore\": () => (/* binding */ ThemeStore)\n/* harmony export */ });\n/* harmony import */ var mobx__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! mobx */ \"./node_modules/mobx/dist/mobx.esm.js\");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./utils */ \"./src/renderer/utils/index.ts\");\n/* harmony import */ var _common_user_store__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../common/user-store */ \"./src/common/user-store/index.ts\");\n/* harmony import */ var _main_logger__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../main/logger */ \"./src/main/logger.ts\");\n/* harmony import */ var _themes_lens_dark_json__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./themes/lens-dark.json */ \"./src/renderer/themes/lens-dark.json\");\n/* harmony import */ var _themes_lens_light_json__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./themes/lens-light.json */ \"./src/renderer/themes/lens-light.json\");\n/* harmony import */ var _common_vars__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../common/vars */ \"./src/common/vars.ts\");\n/* harmony import */ var lodash__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! lodash */ \"./node_modules/lodash/lodash.js\");\n/* harmony import */ var lodash__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(lodash__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var electron__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! electron */ \"electron\");\n/* harmony import */ var electron__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(electron__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _common_ipc_native_theme__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../common/ipc/native-theme */ \"./src/common/ipc/native-theme.ts\");\n/**\n * Copyright (c) OpenLens Authors. All rights reserved.\n * Licensed under MIT License. See LICENSE in root directory for more information.\n */\nvar __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n 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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (undefined && undefined.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\n\n\n\n\n\n\n\n\n\n\nclass ThemeStore extends _utils__WEBPACK_IMPORTED_MODULE_0__.Singleton {\n constructor() {\n super();\n Object.defineProperty(this, \"terminalColorPrefix\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: \"terminal\"\n });\n // bundled themes from `themes/${themeId}.json`\n Object.defineProperty(this, \"themes\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: mobx__WEBPACK_IMPORTED_MODULE_9__.observable.map({\n \"lens-dark\": _themes_lens_dark_json__WEBPACK_IMPORTED_MODULE_3__,\n \"lens-light\": _themes_lens_light_json__WEBPACK_IMPORTED_MODULE_4__,\n })\n });\n Object.defineProperty(this, \"osNativeTheme\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n (0,mobx__WEBPACK_IMPORTED_MODULE_9__.makeObservable)(this);\n (0,_utils__WEBPACK_IMPORTED_MODULE_0__.autoBind)(this);\n this.init();\n }\n get activeThemeId() {\n return _common_user_store__WEBPACK_IMPORTED_MODULE_1__.UserStore.getInstance().colorTheme;\n }\n get terminalThemeId() {\n return _common_user_store__WEBPACK_IMPORTED_MODULE_1__.UserStore.getInstance().terminalTheme;\n }\n get activeTheme() {\n var _a, _b;\n return (_b = (_a = this.systemTheme) !== null && _a !== void 0 ? _a : this.themes.get(this.activeThemeId)) !== null && _b !== void 0 ? _b : this.themes.get(_common_vars__WEBPACK_IMPORTED_MODULE_5__.defaultTheme);\n }\n get terminalColors() {\n var _a;\n const theme = (_a = this.themes.get(this.terminalThemeId)) !== null && _a !== void 0 ? _a : this.activeTheme;\n return Object\n .entries(theme.colors)\n .filter(([name]) => name.startsWith(this.terminalColorPrefix));\n }\n // Replacing keys stored in styles to format accepted by terminal\n // E.g. terminalBrightBlack -> brightBlack\n get xtermColors() {\n return Object.fromEntries(this.terminalColors.map(([name, color]) => [\n (0,lodash__WEBPACK_IMPORTED_MODULE_6__.camelCase)(name.replace(this.terminalColorPrefix, \"\")),\n color,\n ]));\n }\n get themeOptions() {\n return Array.from(this.themes).map(([themeId, theme]) => ({\n label: theme.name,\n value: themeId,\n }));\n }\n get systemTheme() {\n if (this.activeThemeId == \"system\" && this.osNativeTheme) {\n return this.themes.get(`lens-${this.osNativeTheme}`);\n }\n return null;\n }\n async init() {\n await this.setNativeTheme();\n this.bindNativeThemeUpdateEvent();\n // auto-apply active theme\n (0,mobx__WEBPACK_IMPORTED_MODULE_9__.reaction)(() => ({\n themeId: this.activeThemeId,\n terminalThemeId: this.terminalThemeId,\n }), ({ themeId }) => {\n try {\n this.applyTheme(themeId);\n }\n catch (err) {\n _main_logger__WEBPACK_IMPORTED_MODULE_2__[\"default\"].error(err);\n _common_user_store__WEBPACK_IMPORTED_MODULE_1__.UserStore.getInstance().resetTheme();\n }\n }, {\n fireImmediately: true,\n equals: mobx__WEBPACK_IMPORTED_MODULE_9__.comparer.shallow,\n });\n }\n bindNativeThemeUpdateEvent() {\n electron__WEBPACK_IMPORTED_MODULE_7__.ipcRenderer.on(_common_ipc_native_theme__WEBPACK_IMPORTED_MODULE_8__.setNativeThemeChannel, (event, theme) => {\n this.osNativeTheme = theme;\n this.applyTheme(theme);\n });\n }\n async setNativeTheme() {\n const theme = await electron__WEBPACK_IMPORTED_MODULE_7__.ipcRenderer.invoke(_common_ipc_native_theme__WEBPACK_IMPORTED_MODULE_8__.getNativeThemeChannel);\n this.osNativeTheme = theme;\n }\n getThemeById(themeId) {\n return this.themes.get(themeId);\n }\n applyTheme(themeId) {\n var _a;\n const theme = (_a = this.systemTheme) !== null && _a !== void 0 ? _a : this.getThemeById(themeId);\n const colors = Object.entries({\n ...theme.colors,\n ...Object.fromEntries(this.terminalColors),\n });\n colors.forEach(([name, value]) => {\n document.documentElement.style.setProperty(`--${name}`, value);\n });\n // Adding universal theme flag which can be used in component styles\n document.body.classList.toggle(\"theme-light\", theme.type === \"light\");\n }\n}\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_9__.observable,\n __metadata(\"design:type\", String)\n], ThemeStore.prototype, \"osNativeTheme\", void 0);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_9__.computed,\n __metadata(\"design:type\", String),\n __metadata(\"design:paramtypes\", [])\n], ThemeStore.prototype, \"activeThemeId\", null);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_9__.computed,\n __metadata(\"design:type\", String),\n __metadata(\"design:paramtypes\", [])\n], ThemeStore.prototype, \"terminalThemeId\", null);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_9__.computed,\n __metadata(\"design:type\", Object),\n __metadata(\"design:paramtypes\", [])\n], ThemeStore.prototype, \"activeTheme\", null);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_9__.computed,\n __metadata(\"design:type\", Array),\n __metadata(\"design:paramtypes\", [])\n], ThemeStore.prototype, \"terminalColors\", null);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_9__.computed,\n __metadata(\"design:type\", Object),\n __metadata(\"design:paramtypes\", [])\n], ThemeStore.prototype, \"xtermColors\", null);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_9__.computed,\n __metadata(\"design:type\", Array),\n __metadata(\"design:paramtypes\", [])\n], ThemeStore.prototype, \"themeOptions\", null);\n__decorate([\n mobx__WEBPACK_IMPORTED_MODULE_9__.computed,\n __metadata(\"design:type\", Object),\n __metadata(\"design:paramtypes\", [])\n], ThemeStore.prototype, \"systemTheme\", null);\n\n\n//# sourceURL=webpack://open-lens/./src/renderer/theme.store.ts?");
37192
37102
 
37193
37103
  /***/ }),
37194
37104
 
@@ -40922,7 +40832,7 @@ eval("module.exports = JSON.parse('{\"name\":\"winston\",\"description\":\"A log
40922
40832
  /***/ ((module) => {
40923
40833
 
40924
40834
  "use strict";
40925
- eval("module.exports = JSON.parse('{\"name\":\"open-lens\",\"productName\":\"OpenLens\",\"description\":\"OpenLens - Open Source IDE for Kubernetes\",\"homepage\":\"https://github.com/lensapp/lens\",\"version\":\"5.4.0\",\"main\":\"static/build/main.js\",\"copyright\":\"© 2021 OpenLens Authors\",\"license\":\"MIT\",\"author\":{\"name\":\"OpenLens Authors\",\"email\":\"info@k8slens.dev\"},\"scripts\":{\"dev\":\"concurrently -i -k \\\\\"yarn run dev-run -C\\\\\" yarn:dev:*\",\"dev-build\":\"concurrently yarn:compile:*\",\"debug-build\":\"concurrently yarn:compile:main yarn:compile:extension-types\",\"dev-run\":\"nodemon --watch static/build/main.js --exec \\\\\"electron --remote-debugging-port=9223 --inspect .\\\\\"\",\"dev:main\":\"yarn run compile:main --watch --progress\",\"dev:renderer\":\"yarn run compile:renderer --watch --progress\",\"dev:extension-types\":\"yarn run compile:extension-types --watch --progress\",\"compile\":\"env NODE_ENV=production concurrently yarn:compile:*\",\"compile:main\":\"yarn run webpack --config webpack.main.ts\",\"compile:renderer\":\"yarn run webpack --config webpack.renderer.ts\",\"compile:extension-types\":\"yarn run webpack --config webpack.extensions.ts\",\"npm:fix-build-version\":\"yarn run ts-node build/set_build_version.ts\",\"npm:fix-package-version\":\"yarn run ts-node build/set_npm_version.ts\",\"build:linux\":\"yarn run compile && electron-builder --linux --dir\",\"build:mac\":\"yarn run compile && electron-builder --mac --dir\",\"build:win\":\"yarn run compile && electron-builder --win --dir\",\"integration\":\"jest --runInBand --detectOpenHandles --forceExit integration\",\"dist\":\"yarn run compile && electron-builder --publish onTag\",\"dist:dir\":\"yarn run dist --dir -c.compression=store -c.mac.identity=null\",\"download-bins\":\"concurrently yarn:download:*\",\"download:kubectl\":\"yarn run ts-node build/download_kubectl.ts\",\"download:helm\":\"yarn run ts-node build/download_helm.ts\",\"download:k8s-proxy\":\"yarn run ts-node build/download_k8s_proxy.ts\",\"build:tray-icons\":\"yarn run ts-node build/build_tray_icon.ts\",\"build:theme-vars\":\"yarn run ts-node build/build_theme_vars.ts\",\"lint\":\"PROD=true yarn run eslint --ext js,ts,tsx --max-warnings=0 .\",\"lint:fix\":\"yarn run lint --fix\",\"mkdocs-serve-local\":\"docker build -t mkdocs-serve-local:latest mkdocs/ && docker run --rm -it -p 8000:8000 -v ${PWD}:/docs mkdocs-serve-local:latest\",\"verify-docs\":\"docker build -t mkdocs-serve-local:latest mkdocs/ && docker run --rm -v ${PWD}:/docs mkdocs-serve-local:latest build --strict\",\"typedocs-extensions-api\":\"yarn run typedoc src/extensions/extension-api.ts\",\"version-checkout\":\"cat package.json | jq \\'.version\\' -r | xargs printf \\\\\"release/v%s\\\\\" | xargs git checkout -b\",\"version-commit\":\"cat package.json | jq \\'.version\\' -r | xargs printf \\\\\"release v%s\\\\\" | git commit --no-edit -s -F -\",\"version\":\"yarn run version-checkout && git add package.json && yarn run version-commit\",\"postversion\":\"git push --set-upstream ${GIT_REMOTE:-origin} release/v$npm_package_version\"},\"config\":{\"k8sProxyVersion\":\"0.1.2\",\"bundledKubectlVersion\":\"1.23.3\",\"bundledHelmVersion\":\"3.7.2\",\"sentryDsn\":\"\"},\"engines\":{\"node\":\">=14 <15\"},\"jest\":{\"collectCoverage\":false,\"verbose\":true,\"transform\":{\"^.+\\\\\\\\.tsx?$\":\"ts-jest\"},\"moduleNameMapper\":{\"\\\\\\\\.(css|scss)$\":\"<rootDir>/__mocks__/styleMock.ts\",\"\\\\\\\\.(svg|png|jpg|eot|woff2?|ttf)$\":\"<rootDir>/__mocks__/assetMock.ts\"},\"modulePathIgnorePatterns\":[\"<rootDir>/dist\",\"<rootDir>/src/extensions/npm\"],\"setupFiles\":[\"<rootDir>/src/jest.setup.ts\",\"jest-canvas-mock\"],\"globals\":{\"ts-jest\":{\"isolatedModules\":true}}},\"build\":{\"generateUpdatesFilesForAllChannels\":true,\"files\":[\"static/build/main.js\"],\"afterSign\":\"build/notarize.js\",\"extraResources\":[{\"from\":\"locales/\",\"to\":\"locales/\",\"filter\":\"**/*.js\"},{\"from\":\"static/\",\"to\":\"static/\",\"filter\":\"!**/main.js\"},{\"from\":\"build/tray\",\"to\":\"static/icons\",\"filter\":\"*.png\"},{\"from\":\"extensions/\",\"to\":\"./extensions/\",\"filter\":[\"**/*.tgz\",\"**/package.json\",\"!**/node_modules\"]},{\"from\":\"templates/\",\"to\":\"./templates/\",\"filter\":\"**/*.yaml\"},\"LICENSE\"],\"linux\":{\"category\":\"Network\",\"artifactName\":\"${productName}-${version}.${arch}.${ext}\",\"target\":[\"deb\",\"rpm\",\"AppImage\"],\"extraResources\":[{\"from\":\"binaries/client/linux/${arch}/kubectl\",\"to\":\"./${arch}/kubectl\"},{\"from\":\"binaries/client/linux/${arch}/lens-k8s-proxy\",\"to\":\"./${arch}/lens-k8s-proxy\"},{\"from\":\"binaries/client/${arch}/helm3/helm3\",\"to\":\"./helm3/helm3\"}]},\"rpm\":{\"fpm\":[\"--rpm-rpmbuild-define=%define _build_id_links none\"]},\"mac\":{\"hardenedRuntime\":true,\"gatekeeperAssess\":false,\"entitlements\":\"build/entitlements.mac.plist\",\"entitlementsInherit\":\"build/entitlements.mac.plist\",\"extraResources\":[{\"from\":\"binaries/client/darwin/${arch}/kubectl\",\"to\":\"./${arch}/kubectl\"},{\"from\":\"binaries/client/darwin/${arch}/lens-k8s-proxy\",\"to\":\"./${arch}/lens-k8s-proxy\"},{\"from\":\"binaries/client/${arch}/helm3/helm3\",\"to\":\"./helm3/helm3\"}]},\"win\":{\"target\":[\"nsis\"],\"extraResources\":[{\"from\":\"binaries/client/windows/x64/kubectl.exe\",\"to\":\"./x64/kubectl.exe\"},{\"from\":\"binaries/client/windows/ia32/kubectl.exe\",\"to\":\"./ia32/kubectl.exe\"},{\"from\":\"binaries/client/windows/x64/lens-k8s-proxy\",\"to\":\"./x64/lens-k8s-proxy.exe\"},{\"from\":\"binaries/client/windows/ia32/lens-k8s-proxy\",\"to\":\"./ia32/lens-k8s-proxy.exe\"},{\"from\":\"binaries/client/x64/helm3/helm3.exe\",\"to\":\"./helm3/helm3.exe\"}]},\"nsis\":{\"include\":\"build/installer.nsh\",\"oneClick\":false,\"allowElevation\":true,\"createStartMenuShortcut\":true,\"allowToChangeInstallationDirectory\":true},\"protocols\":{\"name\":\"Lens Protocol Handler\",\"schemes\":[\"lens\"],\"role\":\"Viewer\"}},\"dependencies\":{\"@hapi/call\":\"^8.0.1\",\"@hapi/subtext\":\"^7.0.3\",\"@kubernetes/client-node\":\"^0.16.1\",\"@ogre-tools/injectable\":\"5.0.1\",\"@ogre-tools/injectable-react\":\"5.0.1\",\"@sentry/electron\":\"^2.5.4\",\"@sentry/integrations\":\"^6.15.0\",\"@types/circular-dependency-plugin\":\"5.0.4\",\"abort-controller\":\"^3.0.0\",\"auto-bind\":\"^4.0.0\",\"autobind-decorator\":\"^2.4.0\",\"await-lock\":\"^2.1.0\",\"byline\":\"^5.0.0\",\"chokidar\":\"^3.4.3\",\"conf\":\"^7.1.2\",\"crypto-js\":\"^4.1.1\",\"electron-devtools-installer\":\"^3.2.0\",\"electron-updater\":\"^4.6.1\",\"electron-window-state\":\"^5.0.3\",\"filehound\":\"^1.17.5\",\"fs-extra\":\"^9.0.1\",\"glob-to-regexp\":\"^0.4.1\",\"got\":\"^11.8.3\",\"grapheme-splitter\":\"^1.0.4\",\"handlebars\":\"^4.7.7\",\"http-proxy\":\"^1.18.1\",\"immer\":\"^9.0.6\",\"joi\":\"^17.5.0\",\"js-yaml\":\"^4.1.0\",\"jsdom\":\"^16.7.0\",\"jsonpath\":\"^1.1.1\",\"lodash\":\"^4.17.15\",\"mac-ca\":\"^1.0.6\",\"marked\":\"^4.0.10\",\"md5-file\":\"^5.0.0\",\"mobx\":\"^6.3.7\",\"mobx-observable-history\":\"^2.0.3\",\"mobx-react\":\"^7.2.1\",\"mock-fs\":\"^5.1.2\",\"moment\":\"^2.29.1\",\"moment-timezone\":\"^0.5.34\",\"monaco-editor\":\"^0.29.1\",\"monaco-editor-webpack-plugin\":\"^5.0.0\",\"node-fetch\":\"lensapp/node-fetch#2.x\",\"node-pty\":\"^0.10.1\",\"npm\":\"^6.14.15\",\"p-limit\":\"^3.1.0\",\"path-to-regexp\":\"^6.2.0\",\"proper-lockfile\":\"^4.1.2\",\"react\":\"^17.0.2\",\"react-dom\":\"^17.0.2\",\"react-material-ui-carousel\":\"^2.3.8\",\"react-router\":\"^5.2.0\",\"react-virtualized-auto-sizer\":\"^1.0.6\",\"readable-stream\":\"^3.6.0\",\"request\":\"^2.88.2\",\"request-promise-native\":\"^1.0.9\",\"rfc6902\":\"^4.0.2\",\"semver\":\"^7.3.2\",\"shell-env\":\"^3.0.1\",\"spdy\":\"^4.0.2\",\"tar\":\"^6.1.11\",\"tcp-port-used\":\"^1.0.2\",\"tempy\":\"1.0.1\",\"url-parse\":\"^1.5.3\",\"uuid\":\"^8.3.2\",\"win-ca\":\"^3.4.5\",\"winston\":\"^3.3.3\",\"winston-console-format\":\"^1.0.8\",\"winston-transport-browserconsole\":\"^1.0.5\",\"ws\":\"^7.5.5\"},\"devDependencies\":{\"@async-fn/jest\":\"1.5.3\",\"@material-ui/core\":\"^4.12.3\",\"@material-ui/icons\":\"^4.11.2\",\"@material-ui/lab\":\"^4.0.0-alpha.60\",\"@pmmmwh/react-refresh-webpack-plugin\":\"^0.5.4\",\"@sentry/types\":\"^6.14.1\",\"@testing-library/jest-dom\":\"^5.16.1\",\"@testing-library/react\":\"^11.2.7\",\"@testing-library/user-event\":\"^13.5.0\",\"@types/byline\":\"^4.2.33\",\"@types/chart.js\":\"^2.9.34\",\"@types/color\":\"^3.0.2\",\"@types/crypto-js\":\"^3.1.47\",\"@types/dompurify\":\"^2.3.1\",\"@types/electron-devtools-installer\":\"^2.2.0\",\"@types/fs-extra\":\"^9.0.13\",\"@types/glob-to-regexp\":\"^0.4.1\",\"@types/hoist-non-react-statics\":\"^3.3.1\",\"@types/html-webpack-plugin\":\"^3.2.6\",\"@types/http-proxy\":\"^1.17.7\",\"@types/jest\":\"^26.0.24\",\"@types/js-yaml\":\"^4.0.5\",\"@types/jsdom\":\"^16.2.13\",\"@types/jsonpath\":\"^0.2.0\",\"@types/lodash\":\"^4.14.177\",\"@types/marked\":\"^4.0.1\",\"@types/md5-file\":\"^4.0.2\",\"@types/mini-css-extract-plugin\":\"^2.4.0\",\"@types/mock-fs\":\"^4.13.1\",\"@types/node\":\"14.17.33\",\"@types/node-fetch\":\"^2.5.12\",\"@types/npm\":\"^2.0.32\",\"@types/proper-lockfile\":\"^4.1.2\",\"@types/randomcolor\":\"^0.5.6\",\"@types/react\":\"^17.0.34\",\"@types/react-beautiful-dnd\":\"^13.1.2\",\"@types/react-dom\":\"^17.0.11\",\"@types/react-router-dom\":\"^5.3.2\",\"@types/react-select\":\"3.1.2\",\"@types/react-table\":\"^7.7.9\",\"@types/react-virtualized-auto-sizer\":\"^1.0.1\",\"@types/react-window\":\"^1.8.5\",\"@types/readable-stream\":\"^2.3.12\",\"@types/request\":\"^2.48.7\",\"@types/request-promise-native\":\"^1.0.18\",\"@types/semver\":\"^7.3.9\",\"@types/sharp\":\"^0.29.4\",\"@types/spdy\":\"^3.4.5\",\"@types/tar\":\"^4.0.5\",\"@types/tcp-port-used\":\"^1.0.0\",\"@types/tempy\":\"^0.3.0\",\"@types/triple-beam\":\"^1.3.2\",\"@types/url-parse\":\"^1.4.5\",\"@types/uuid\":\"^8.3.3\",\"@types/webpack\":\"^5.28.0\",\"@types/webpack-dev-server\":\"^4.7.2\",\"@types/webpack-env\":\"^1.16.3\",\"@types/webpack-node-externals\":\"^2.5.3\",\"@typescript-eslint/eslint-plugin\":\"^5.10.1\",\"@typescript-eslint/parser\":\"^5.10.1\",\"ansi_up\":\"^5.1.0\",\"chart.js\":\"^2.9.4\",\"circular-dependency-plugin\":\"^5.2.2\",\"color\":\"^3.2.1\",\"concurrently\":\"^7.0.0\",\"css-loader\":\"^6.5.1\",\"deepdash\":\"^5.3.9\",\"dompurify\":\"^2.3.4\",\"electron\":\"^14.2.4\",\"electron-builder\":\"^22.14.5\",\"electron-notarize\":\"^0.3.0\",\"esbuild\":\"^0.13.15\",\"esbuild-loader\":\"^2.18.0\",\"eslint\":\"^8.7.0\",\"eslint-plugin-header\":\"^3.1.1\",\"eslint-plugin-import\":\"^2.25.4\",\"eslint-plugin-react\":\"^7.28.0\",\"eslint-plugin-react-hooks\":\"^4.3.0\",\"eslint-plugin-unused-imports\":\"^2.0.0\",\"flex.box\":\"^3.4.4\",\"fork-ts-checker-webpack-plugin\":\"^6.5.0\",\"hoist-non-react-statics\":\"^3.3.2\",\"html-webpack-plugin\":\"^5.5.0\",\"ignore-loader\":\"^0.1.2\",\"include-media\":\"^1.4.9\",\"jest\":\"26.6.3\",\"jest-canvas-mock\":\"^2.3.1\",\"jest-fetch-mock\":\"^3.0.3\",\"jest-mock-extended\":\"^1.0.18\",\"make-plural\":\"^6.2.2\",\"mini-css-extract-plugin\":\"^2.5.2\",\"node-gyp\":\"7.1.2\",\"node-loader\":\"^2.0.0\",\"nodemon\":\"^2.0.15\",\"playwright\":\"^1.17.1\",\"postcss\":\"^8.4.5\",\"postcss-loader\":\"^6.2.1\",\"randomcolor\":\"^0.6.2\",\"react-beautiful-dnd\":\"^13.1.0\",\"react-refresh\":\"^0.11.0\",\"react-refresh-typescript\":\"^2.0.3\",\"react-router-dom\":\"^5.3.0\",\"react-select\":\"3.2.0\",\"react-select-event\":\"^5.1.0\",\"react-table\":\"^7.7.0\",\"react-window\":\"^1.8.6\",\"sass\":\"^1.45.1\",\"sass-loader\":\"^12.4.0\",\"sharp\":\"^0.29.3\",\"style-loader\":\"^3.3.1\",\"tailwindcss\":\"^3.0.7\",\"ts-jest\":\"26.5.6\",\"ts-loader\":\"^9.2.6\",\"ts-node\":\"^10.4.0\",\"type-fest\":\"^1.0.2\",\"typed-emitter\":\"^1.4.0\",\"typedoc\":\"0.22.10\",\"typedoc-plugin-markdown\":\"^3.11.12\",\"typeface-roboto\":\"^1.1.13\",\"typescript\":\"^4.5.2\",\"typescript-plugin-css-modules\":\"^3.4.0\",\"webpack\":\"^5.69.0\",\"webpack-cli\":\"^4.9.2\",\"webpack-dev-server\":\"^4.7.4\",\"webpack-node-externals\":\"^3.0.0\",\"xterm\":\"^4.15.0\",\"xterm-addon-fit\":\"^0.5.0\"}}');\n\n//# sourceURL=webpack://open-lens/./package.json?");
40835
+ eval("module.exports = JSON.parse('{\"name\":\"open-lens\",\"productName\":\"OpenLens\",\"description\":\"OpenLens - Open Source IDE for Kubernetes\",\"homepage\":\"https://github.com/lensapp/lens\",\"version\":\"5.4.0\",\"main\":\"static/build/main.js\",\"copyright\":\"© 2021 OpenLens Authors\",\"license\":\"MIT\",\"author\":{\"name\":\"OpenLens Authors\",\"email\":\"info@k8slens.dev\"},\"scripts\":{\"dev\":\"concurrently -i -k \\\\\"yarn run dev-run -C\\\\\" yarn:dev:*\",\"dev-build\":\"concurrently yarn:compile:*\",\"debug-build\":\"concurrently yarn:compile:main yarn:compile:extension-types\",\"dev-run\":\"nodemon --watch ./static/build/main.js --exec \\\\\"electron --remote-debugging-port=9223 --inspect .\\\\\"\",\"dev:main\":\"yarn run compile:main --watch --progress\",\"dev:renderer\":\"yarn run ts-node webpack.dev-server.ts\",\"compile\":\"env NODE_ENV=production concurrently yarn:compile:*\",\"compile:main\":\"yarn run webpack --config webpack.main.ts\",\"compile:renderer\":\"yarn run webpack --config webpack.renderer.ts\",\"compile:extension-types\":\"yarn run webpack --config webpack.extensions.ts\",\"npm:fix-build-version\":\"yarn run ts-node build/set_build_version.ts\",\"npm:fix-package-version\":\"yarn run ts-node build/set_npm_version.ts\",\"build:linux\":\"yarn run compile && electron-builder --linux --dir\",\"build:mac\":\"yarn run compile && electron-builder --mac --dir\",\"build:win\":\"yarn run compile && electron-builder --win --dir\",\"integration\":\"jest --runInBand --detectOpenHandles --forceExit integration\",\"dist\":\"yarn run compile && electron-builder --publish onTag\",\"dist:dir\":\"yarn run dist --dir -c.compression=store -c.mac.identity=null\",\"download:binaries\":\"yarn run ts-node build/download_binaries.ts\",\"build:tray-icons\":\"yarn run ts-node build/build_tray_icon.ts\",\"build:theme-vars\":\"yarn run ts-node build/build_theme_vars.ts\",\"lint\":\"PROD=true yarn run eslint --ext js,ts,tsx --max-warnings=0 .\",\"lint:fix\":\"yarn run lint --fix\",\"mkdocs-serve-local\":\"docker build -t mkdocs-serve-local:latest mkdocs/ && docker run --rm -it -p 8000:8000 -v ${PWD}:/docs mkdocs-serve-local:latest\",\"verify-docs\":\"docker build -t mkdocs-serve-local:latest mkdocs/ && docker run --rm -v ${PWD}:/docs mkdocs-serve-local:latest build --strict\",\"typedocs-extensions-api\":\"yarn run typedoc src/extensions/extension-api.ts\",\"version-checkout\":\"cat package.json | jq \\'.version\\' -r | xargs printf \\\\\"release/v%s\\\\\" | xargs git checkout -b\",\"version-commit\":\"cat package.json | jq \\'.version\\' -r | xargs printf \\\\\"release v%s\\\\\" | git commit --no-edit -s -F -\",\"version\":\"yarn run version-checkout && git add package.json && yarn run version-commit\",\"postversion\":\"git push --set-upstream ${GIT_REMOTE:-origin} release/v$npm_package_version\"},\"config\":{\"k8sProxyVersion\":\"0.1.5\",\"bundledKubectlVersion\":\"1.23.3\",\"bundledHelmVersion\":\"3.7.2\",\"sentryDsn\":\"\"},\"engines\":{\"node\":\">=14 <15\"},\"jest\":{\"collectCoverage\":false,\"verbose\":true,\"transform\":{\"^.+\\\\\\\\.tsx?$\":\"ts-jest\"},\"moduleNameMapper\":{\"\\\\\\\\.(css|scss)$\":\"<rootDir>/__mocks__/styleMock.ts\",\"\\\\\\\\.(svg|png|jpg|eot|woff2?|ttf)$\":\"<rootDir>/__mocks__/assetMock.ts\"},\"modulePathIgnorePatterns\":[\"<rootDir>/dist\",\"<rootDir>/src/extensions/npm\"],\"setupFiles\":[\"<rootDir>/src/jest.setup.ts\",\"jest-canvas-mock\"],\"globals\":{\"ts-jest\":{\"isolatedModules\":true}}},\"build\":{\"generateUpdatesFilesForAllChannels\":true,\"files\":[\"static/build/main.js\"],\"afterSign\":\"build/notarize.js\",\"extraResources\":[{\"from\":\"locales/\",\"to\":\"locales/\",\"filter\":\"**/*.js\"},{\"from\":\"static/\",\"to\":\"static/\",\"filter\":\"!**/main.js\"},{\"from\":\"build/tray\",\"to\":\"static/icons\",\"filter\":\"*.png\"},{\"from\":\"extensions/\",\"to\":\"./extensions/\",\"filter\":[\"**/*.tgz\",\"**/package.json\",\"!**/node_modules\"]},{\"from\":\"templates/\",\"to\":\"./templates/\",\"filter\":\"**/*.yaml\"},\"LICENSE\"],\"linux\":{\"category\":\"Network\",\"artifactName\":\"${productName}-${version}.${arch}.${ext}\",\"target\":[\"deb\",\"rpm\",\"AppImage\"],\"extraResources\":[{\"from\":\"binaries/client/linux/${arch}/kubectl\",\"to\":\"./${arch}/kubectl\"},{\"from\":\"binaries/client/linux/${arch}/lens-k8s-proxy\",\"to\":\"./${arch}/lens-k8s-proxy\"},{\"from\":\"binaries/client/linux/${arch}/helm\",\"to\":\"./${arch}/helm\"}]},\"rpm\":{\"fpm\":[\"--rpm-rpmbuild-define=%define _build_id_links none\"]},\"mac\":{\"hardenedRuntime\":true,\"gatekeeperAssess\":false,\"entitlements\":\"build/entitlements.mac.plist\",\"entitlementsInherit\":\"build/entitlements.mac.plist\",\"extraResources\":[{\"from\":\"binaries/client/darwin/${arch}/kubectl\",\"to\":\"./${arch}/kubectl\"},{\"from\":\"binaries/client/darwin/${arch}/lens-k8s-proxy\",\"to\":\"./${arch}/lens-k8s-proxy\"},{\"from\":\"binaries/client/darwin/${arch}/helm\",\"to\":\"./${arch}/helm\"}]},\"win\":{\"target\":[\"nsis\"],\"extraResources\":[{\"from\":\"binaries/client/windows/${arch}/kubectl.exe\",\"to\":\"./${arch}/kubectl.exe\"},{\"from\":\"binaries/client/windows/${arch}/lens-k8s-proxy.exe\",\"to\":\"./${arch}/lens-k8s-proxy.exe\"},{\"from\":\"binaries/client/windows/${arch}/helm.exe\",\"to\":\"./${arch}/helm.exe\"}]},\"nsis\":{\"include\":\"build/installer.nsh\",\"oneClick\":false,\"allowElevation\":true,\"createStartMenuShortcut\":true,\"allowToChangeInstallationDirectory\":true},\"protocols\":{\"name\":\"Lens Protocol Handler\",\"schemes\":[\"lens\"],\"role\":\"Viewer\"}},\"dependencies\":{\"@hapi/call\":\"^8.0.1\",\"@hapi/subtext\":\"^7.0.3\",\"@kubernetes/client-node\":\"^0.16.1\",\"@ogre-tools/injectable\":\"5.0.1\",\"@ogre-tools/injectable-react\":\"5.0.1\",\"@sentry/electron\":\"^2.5.4\",\"@sentry/integrations\":\"^6.15.0\",\"@types/circular-dependency-plugin\":\"5.0.4\",\"abort-controller\":\"^3.0.0\",\"auto-bind\":\"^4.0.0\",\"autobind-decorator\":\"^2.4.0\",\"await-lock\":\"^2.1.0\",\"byline\":\"^5.0.0\",\"chokidar\":\"^3.4.3\",\"conf\":\"^7.1.2\",\"crypto-js\":\"^4.1.1\",\"electron-devtools-installer\":\"^3.2.0\",\"electron-updater\":\"^4.6.1\",\"electron-window-state\":\"^5.0.3\",\"filehound\":\"^1.17.5\",\"fs-extra\":\"^9.0.1\",\"glob-to-regexp\":\"^0.4.1\",\"got\":\"^11.8.3\",\"grapheme-splitter\":\"^1.0.4\",\"handlebars\":\"^4.7.7\",\"http-proxy\":\"^1.18.1\",\"immer\":\"^9.0.6\",\"joi\":\"^17.5.0\",\"js-yaml\":\"^4.1.0\",\"jsdom\":\"^16.7.0\",\"jsonpath\":\"^1.1.1\",\"lodash\":\"^4.17.15\",\"mac-ca\":\"^1.0.6\",\"marked\":\"^4.0.10\",\"md5-file\":\"^5.0.0\",\"mobx\":\"^6.3.7\",\"mobx-observable-history\":\"^2.0.3\",\"mobx-react\":\"^7.2.1\",\"mock-fs\":\"^5.1.2\",\"moment\":\"^2.29.1\",\"moment-timezone\":\"^0.5.34\",\"monaco-editor\":\"^0.29.1\",\"monaco-editor-webpack-plugin\":\"^5.0.0\",\"node-fetch\":\"lensapp/node-fetch#2.x\",\"node-pty\":\"^0.10.1\",\"npm\":\"^6.14.15\",\"p-limit\":\"^3.1.0\",\"path-to-regexp\":\"^6.2.0\",\"proper-lockfile\":\"^4.1.2\",\"react\":\"^17.0.2\",\"react-dom\":\"^17.0.2\",\"react-material-ui-carousel\":\"^2.3.8\",\"react-router\":\"^5.2.0\",\"react-virtualized-auto-sizer\":\"^1.0.6\",\"readable-stream\":\"^3.6.0\",\"request\":\"^2.88.2\",\"request-promise-native\":\"^1.0.9\",\"rfc6902\":\"^4.0.2\",\"semver\":\"^7.3.2\",\"shell-env\":\"^3.0.1\",\"spdy\":\"^4.0.2\",\"tar\":\"^6.1.11\",\"tcp-port-used\":\"^1.0.2\",\"tempy\":\"1.0.1\",\"url-parse\":\"^1.5.10\",\"uuid\":\"^8.3.2\",\"win-ca\":\"^3.4.5\",\"winston\":\"^3.3.3\",\"winston-console-format\":\"^1.0.8\",\"winston-transport-browserconsole\":\"^1.0.5\",\"ws\":\"^7.5.5\"},\"devDependencies\":{\"@async-fn/jest\":\"1.5.3\",\"@material-ui/core\":\"^4.12.3\",\"@material-ui/icons\":\"^4.11.2\",\"@material-ui/lab\":\"^4.0.0-alpha.60\",\"@pmmmwh/react-refresh-webpack-plugin\":\"^0.5.4\",\"@sentry/types\":\"^6.18.2\",\"@testing-library/jest-dom\":\"^5.16.1\",\"@testing-library/react\":\"^11.2.7\",\"@testing-library/user-event\":\"^13.5.0\",\"@types/byline\":\"^4.2.33\",\"@types/chart.js\":\"^2.9.34\",\"@types/cli-progress\":\"^3.9.2\",\"@types/color\":\"^3.0.2\",\"@types/crypto-js\":\"^3.1.47\",\"@types/dompurify\":\"^2.3.1\",\"@types/electron-devtools-installer\":\"^2.2.0\",\"@types/fs-extra\":\"^9.0.13\",\"@types/glob-to-regexp\":\"^0.4.1\",\"@types/gunzip-maybe\":\"^1.4.0\",\"@types/hoist-non-react-statics\":\"^3.3.1\",\"@types/html-webpack-plugin\":\"^3.2.6\",\"@types/http-proxy\":\"^1.17.7\",\"@types/jest\":\"^26.0.24\",\"@types/js-yaml\":\"^4.0.5\",\"@types/jsdom\":\"^16.2.13\",\"@types/jsonpath\":\"^0.2.0\",\"@types/lodash\":\"^4.14.177\",\"@types/marked\":\"^4.0.1\",\"@types/md5-file\":\"^4.0.2\",\"@types/mini-css-extract-plugin\":\"^2.4.0\",\"@types/mock-fs\":\"^4.13.1\",\"@types/node\":\"14.17.33\",\"@types/node-fetch\":\"^2.5.12\",\"@types/npm\":\"^2.0.32\",\"@types/proper-lockfile\":\"^4.1.2\",\"@types/randomcolor\":\"^0.5.6\",\"@types/react\":\"^17.0.34\",\"@types/react-beautiful-dnd\":\"^13.1.2\",\"@types/react-dom\":\"^17.0.11\",\"@types/react-router-dom\":\"^5.3.2\",\"@types/react-select\":\"3.1.2\",\"@types/react-table\":\"^7.7.9\",\"@types/react-virtualized-auto-sizer\":\"^1.0.1\",\"@types/react-window\":\"^1.8.5\",\"@types/readable-stream\":\"^2.3.12\",\"@types/request\":\"^2.48.7\",\"@types/request-promise-native\":\"^1.0.18\",\"@types/semver\":\"^7.3.9\",\"@types/sharp\":\"^0.29.4\",\"@types/spdy\":\"^3.4.5\",\"@types/tar\":\"^4.0.5\",\"@types/tar-stream\":\"^2.2.2\",\"@types/tcp-port-used\":\"^1.0.0\",\"@types/tempy\":\"^0.3.0\",\"@types/triple-beam\":\"^1.3.2\",\"@types/url-parse\":\"^1.4.8\",\"@types/uuid\":\"^8.3.3\",\"@types/webpack\":\"^5.28.0\",\"@types/webpack-dev-server\":\"^4.7.2\",\"@types/webpack-env\":\"^1.16.3\",\"@types/webpack-node-externals\":\"^2.5.3\",\"@typescript-eslint/eslint-plugin\":\"^5.14.0\",\"@typescript-eslint/parser\":\"^5.10.1\",\"ansi_up\":\"^5.1.0\",\"mock-http\":\"^1.1.0\",\"chart.js\":\"^2.9.4\",\"circular-dependency-plugin\":\"^5.2.2\",\"cli-progress\":\"^3.10.0\",\"color\":\"^3.2.1\",\"concurrently\":\"^7.0.0\",\"css-loader\":\"^6.5.1\",\"deepdash\":\"^5.3.9\",\"dompurify\":\"^2.3.4\",\"electron\":\"^14.2.4\",\"electron-builder\":\"^22.14.5\",\"electron-notarize\":\"^0.3.0\",\"esbuild\":\"^0.13.15\",\"esbuild-loader\":\"^2.18.0\",\"eslint\":\"^8.7.0\",\"eslint-plugin-header\":\"^3.1.1\",\"eslint-plugin-import\":\"^2.25.4\",\"eslint-plugin-react\":\"^7.28.0\",\"eslint-plugin-react-hooks\":\"^4.3.0\",\"eslint-plugin-unused-imports\":\"^2.0.0\",\"flex.box\":\"^3.4.4\",\"fork-ts-checker-webpack-plugin\":\"^6.5.0\",\"gunzip-maybe\":\"^1.4.2\",\"hoist-non-react-statics\":\"^3.3.2\",\"html-webpack-plugin\":\"^5.5.0\",\"ignore-loader\":\"^0.1.2\",\"include-media\":\"^1.4.9\",\"jest\":\"26.6.3\",\"jest-canvas-mock\":\"^2.3.1\",\"jest-fetch-mock\":\"^3.0.3\",\"jest-mock-extended\":\"^1.0.18\",\"make-plural\":\"^6.2.2\",\"mini-css-extract-plugin\":\"^2.5.2\",\"node-gyp\":\"7.1.2\",\"node-loader\":\"^2.0.0\",\"nodemon\":\"^2.0.15\",\"playwright\":\"^1.17.1\",\"postcss\":\"^8.4.5\",\"postcss-loader\":\"^6.2.1\",\"randomcolor\":\"^0.6.2\",\"react-beautiful-dnd\":\"^13.1.0\",\"react-refresh\":\"^0.11.0\",\"react-refresh-typescript\":\"^2.0.3\",\"react-router-dom\":\"^5.3.0\",\"react-select\":\"3.2.0\",\"react-select-event\":\"^5.1.0\",\"react-table\":\"^7.7.0\",\"react-window\":\"^1.8.6\",\"sass\":\"^1.45.1\",\"sass-loader\":\"^12.4.0\",\"sharp\":\"^0.29.3\",\"style-loader\":\"^3.3.1\",\"tailwindcss\":\"^3.0.7\",\"tar-stream\":\"^2.2.0\",\"ts-jest\":\"26.5.6\",\"ts-loader\":\"^9.2.6\",\"ts-node\":\"^10.4.0\",\"type-fest\":\"^1.4.0\",\"typed-emitter\":\"^1.4.0\",\"typedoc\":\"0.22.10\",\"typedoc-plugin-markdown\":\"^3.11.12\",\"typeface-roboto\":\"^1.1.13\",\"typescript\":\"^4.5.2\",\"typescript-plugin-css-modules\":\"^3.4.0\",\"webpack\":\"^5.69.0\",\"webpack-cli\":\"^4.9.2\",\"webpack-dev-server\":\"^4.7.4\",\"webpack-node-externals\":\"^3.0.0\",\"xterm\":\"^4.15.0\",\"xterm-addon-fit\":\"^0.5.0\"}}');\n\n//# sourceURL=webpack://open-lens/./package.json?");
40926
40836
 
40927
40837
  /***/ }),
40928
40838