bito-code-review[bot] commented on code in PR #37779:
URL: https://github.com/apache/superset/pull/37779#discussion_r2784449831
##########
superset-frontend/plugins/plugin-chart-unified-list-arrow/src/plugin/buildQuery.ts:
##########
@@ -0,0 +1,90 @@
+import { buildQueryContext, QueryFormData, ensureIsArray } from
'@superset-ui/core';
Review Comment:
<div>
<div id="suggestion">
<div id="issue"><b>Missing License Header</b></div>
<div id="fix">
New files must include the Apache Software Foundation license header. This
is a project requirement for all code files.
</div>
<details>
<summary>
<b>Code suggestion</b>
</summary>
<blockquote>Check the AI-generated fix before applying</blockquote>
<div id="code">
```
@@ -1,0 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
```
</div>
</details>
</div>
<details>
<summary><b>Citations</b></summary>
<ul>
<li>
Rule Violated: <a
href="https://github.com/apache/superset/blob/fd6cdc6/.cursor/rules/dev-standard.mdc#L47">dev-standard.mdc:47</a>
</li>
</ul>
</details>
<small><i>Code Review Run #d91605</i></small>
</div>
---
Should Bito avoid suggestions like this for future reviews? (<a
href=https://alpha.bito.ai/home/ai-agents/review-rules>Manage Rules</a>)
- [ ] Yes, avoid them
##########
superset/static/service-worker.js:
##########
@@ -1,27 +1,491 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
+/*
+ * ATTENTION: An "eval-source-map" devtool has been used.
+ * This devtool is neither made for production nor for readable output files.
+ * It uses "eval()" calls to create a separate source file with attached
SourceMaps in the browser devtools.
+ * If you are trying to read the output file, select a different devtool
(https://webpack.js.org/configuration/devtool/)
+ * or disable the default devtool with "devtool: false".
+ * If you are looking for production-ready output files, see mode:
"production" (https://webpack.js.org/configuration/mode/).
*/
+/******/ (() => { // webpackBootstrap
+/******/ "use strict";
+/******/ var __webpack_modules__ = ({
-// Minimal service worker for PWA file handling support
-self.addEventListener('install', event => {
- event.waitUntil(self.skipWaiting());
-});
+/***/ "./src/service-worker.ts"
+/*!*******************************!*\
+ !*** ./src/service-worker.ts ***!
+ \*******************************/
+() {
-self.addEventListener('activate', event => {
- event.waitUntil(self.clients.claim());
-});
+eval("{/**\r\n * Licensed to the Apache Software Foundation (ASF) under
one\r\n * or more contributor license agreements. See the NOTICE file\r\n *
distributed with this work for additional information\r\n * regarding copyright
ownership. The ASF licenses this file\r\n * to you under the Apache License,
Version 2.0 (the\r\n * \"License\"); you may not use this file except in
compliance\r\n * with the License. You may obtain a copy of the License at\r\n
*\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless
required by applicable law or agreed to in writing,\r\n * software distributed
under the License is distributed on an\r\n * \"AS IS\" BASIS, WITHOUT
WARRANTIES OR CONDITIONS OF ANY\r\n * KIND, either express or implied. See the
License for the\r\n * specific language governing permissions and
limitations\r\n * under the License.\r\n */ // Service Worker types (declared
locally to avoid polluting global scope)\nself.addEventListener('install',
(event)=>{\n e
vent.waitUntil(self.skipWaiting());\n});\nself.addEventListener('activate',
(event)=>{\n event.waitUntil(self.clients.claim());\n});\n\n//#
sourceURL=[module]\n//#
sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvc2VydmljZS13b3JrZXIudHMiLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBaUJBO0FBWUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUEiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9zdXBlcnNldC8uL3NyYy9zZXJ2aWNlLXdvcmtlci50cz83ZjU4Il0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxyXG4gKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lXHJcbiAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZVxyXG4gKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvblxyXG4gKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlXHJcbiAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGVcclxuICogXCJMaWNlbnNlXCIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb2
1wbGlhbmNlXHJcbiAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcclxuICpcclxuICogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcclxuICpcclxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLFxyXG4gKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhblxyXG4gKiBcIkFTIElTXCIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWVxyXG4gKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGVcclxuICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9uc1xyXG4gKiB1bmRlciB0aGUgTGljZW5zZS5cclxuICovXHJcblxyXG4vLyBTZXJ2aWNlIFdvcmtlciB0eXBlcyAoZGVjbGFyZWQgbG9jYWxseSB0byBhdm9pZCBwb2xsdXRpbmcgZ2xvYmFsIHNjb3BlKVxyXG5kZWNsYXJlIGNvbnN0IHNlbGY6IHtcclxuICBza2lwV2FpdGluZygpOiBQcm9taXNlPHZvaWQ+O1xyXG4gIGNsaWVudHM6IHsgY2xhaW0oKTogUHJvbWlzZTx2b2lkPiB9O1xyXG4gIGFkZEV2ZW50TGlzdGVuZXIoXHJcbiAgICB0eXBlOiAnaW5zdGFsbCcgfCAnYWN0aXZhdGUnLFxyXG4gICAgbGlzdGVuZXI
6IChldmVudDogeyB3YWl0VW50aWwocHJvbWlzZTogUHJvbWlzZTx1bmtub3duPik6IHZvaWQgfSkgPT4gdm9pZCxcclxuICApOiB2b2lkO1xyXG59O1xyXG5cclxuc2VsZi5hZGRFdmVudExpc3RlbmVyKCdpbnN0YWxsJywgZXZlbnQgPT4ge1xyXG4gIGV2ZW50LndhaXRVbnRpbChzZWxmLnNraXBXYWl0aW5nKCkpO1xyXG59KTtcclxuXHJcbnNlbGYuYWRkRXZlbnRMaXN0ZW5lcignYWN0aXZhdGUnLCBldmVudCA9PiB7XHJcbiAgZXZlbnQud2FpdFVudGlsKHNlbGYuY2xpZW50cy5jbGFpbSgpKTtcclxufSk7XHJcblxyXG5leHBvcnQge307XHJcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//#
sourceURL=webpack-internal:///./src/service-worker.ts\n\n}");
Review Comment:
<div>
<div id="suggestion">
<div id="issue"><b>Security Risk: Eval in Service Worker</b></div>
<div id="fix">
The service worker bundle contains eval() calls from webpack's
eval-source-map devtool, which is inappropriate for production service workers
as it poses a security risk by allowing arbitrary code execution in a
privileged network-interception context. Service workers should not use eval to
comply with Content Security Policies and avoid potential exploits.
</div>
</div>
<small><i>Code Review Run #d91605</i></small>
</div>
---
Should Bito avoid suggestions like this for future reviews? (<a
href=https://alpha.bito.ai/home/ai-agents/review-rules>Manage Rules</a>)
- [ ] Yes, avoid them
##########
superset-frontend/plugins/plugin-chart-unified-list-bar/src/components/Row.tsx:
##########
@@ -0,0 +1,210 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+import React from 'react';
+import { TimeseriesDataRecord, safeHtmlSpan } from '@superset-ui/core';
+import {
+ RowContainer,
+ KeySection,
+ KeyField,
+ KeySubField,
+ ContentSection,
+ SecondaryFieldsContainer,
+ SecondaryField,
+ BarSection,
+ BarContainer,
+ BarFill,
+} from '../styles';
+import { UnifiedListBarChartCustomizeProps } from '../types';
+
+// Built-in severity icon mapping (0=none, 1=warning, 2=error, 3=critical)
+const getSeverityIcon = (severityValue: any) => {
+ const numVal = Number(severityValue);
+ switch (numVal) {
+ case 0: return null; // No icon
+ case 1: return { icon: '⚠', color: '#f39c12' }; // Warning -
yellow/orange
+ case 2: return { icon: '⚠', color: '#0e0d0df' }; // Error - redish
black (per user's edited Row.tsx)
Review Comment:
<div>
<div id="suggestion">
<div id="issue"><b>Invalid CSS hex color</b></div>
<div id="fix">
The hex color '#0e0d0df' is invalid (7 digits instead of 6), causing CSS to
ignore it and potentially default to black. This affects error severity icon
display.
</div>
<details>
<summary>
<b>Code suggestion</b>
</summary>
<blockquote>Check the AI-generated fix before applying</blockquote>
<div id="code">
````suggestion
case 2: return { icon: '⚠', color: '#0e0d0d' }; // Error - redish
black (per user's edited Row.tsx)
````
</div>
</details>
</div>
<small><i>Code Review Run #d91605</i></small>
</div>
---
Should Bito avoid suggestions like this for future reviews? (<a
href=https://alpha.bito.ai/home/ai-agents/review-rules>Manage Rules</a>)
- [ ] Yes, avoid them
##########
superset/static/service-worker.js:
##########
@@ -1,27 +1,491 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
+/*
+ * ATTENTION: An "eval-source-map" devtool has been used.
+ * This devtool is neither made for production nor for readable output files.
+ * It uses "eval()" calls to create a separate source file with attached
SourceMaps in the browser devtools.
+ * If you are trying to read the output file, select a different devtool
(https://webpack.js.org/configuration/devtool/)
+ * or disable the default devtool with "devtool: false".
+ * If you are looking for production-ready output files, see mode:
"production" (https://webpack.js.org/configuration/mode/).
*/
+/******/ (() => { // webpackBootstrap
+/******/ "use strict";
+/******/ var __webpack_modules__ = ({
-// Minimal service worker for PWA file handling support
-self.addEventListener('install', event => {
- event.waitUntil(self.skipWaiting());
-});
+/***/ "./src/service-worker.ts"
+/*!*******************************!*\
+ !*** ./src/service-worker.ts ***!
+ \*******************************/
+() {
-self.addEventListener('activate', event => {
- event.waitUntil(self.clients.claim());
-});
+eval("{/**\r\n * Licensed to the Apache Software Foundation (ASF) under
one\r\n * or more contributor license agreements. See the NOTICE file\r\n *
distributed with this work for additional information\r\n * regarding copyright
ownership. The ASF licenses this file\r\n * to you under the Apache License,
Version 2.0 (the\r\n * \"License\"); you may not use this file except in
compliance\r\n * with the License. You may obtain a copy of the License at\r\n
*\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless
required by applicable law or agreed to in writing,\r\n * software distributed
under the License is distributed on an\r\n * \"AS IS\" BASIS, WITHOUT
WARRANTIES OR CONDITIONS OF ANY\r\n * KIND, either express or implied. See the
License for the\r\n * specific language governing permissions and
limitations\r\n * under the License.\r\n */ // Service Worker types (declared
locally to avoid polluting global scope)\nself.addEventListener('install',
(event)=>{\n e
vent.waitUntil(self.skipWaiting());\n});\nself.addEventListener('activate',
(event)=>{\n event.waitUntil(self.clients.claim());\n});\n\n//#
sourceURL=[module]\n//#
sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvc2VydmljZS13b3JrZXIudHMiLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBaUJBO0FBWUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUEiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9zdXBlcnNldC8uL3NyYy9zZXJ2aWNlLXdvcmtlci50cz83ZjU4Il0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxyXG4gKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lXHJcbiAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZVxyXG4gKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvblxyXG4gKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlXHJcbiAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGVcclxuICogXCJMaWNlbnNlXCIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb2
1wbGlhbmNlXHJcbiAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcclxuICpcclxuICogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcclxuICpcclxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLFxyXG4gKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhblxyXG4gKiBcIkFTIElTXCIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWVxyXG4gKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGVcclxuICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9uc1xyXG4gKiB1bmRlciB0aGUgTGljZW5zZS5cclxuICovXHJcblxyXG4vLyBTZXJ2aWNlIFdvcmtlciB0eXBlcyAoZGVjbGFyZWQgbG9jYWxseSB0byBhdm9pZCBwb2xsdXRpbmcgZ2xvYmFsIHNjb3BlKVxyXG5kZWNsYXJlIGNvbnN0IHNlbGY6IHtcclxuICBza2lwV2FpdGluZygpOiBQcm9taXNlPHZvaWQ+O1xyXG4gIGNsaWVudHM6IHsgY2xhaW0oKTogUHJvbWlzZTx2b2lkPiB9O1xyXG4gIGFkZEV2ZW50TGlzdGVuZXIoXHJcbiAgICB0eXBlOiAnaW5zdGFsbCcgfCAnYWN0aXZhdGUnLFxyXG4gICAgbGlzdGVuZXI
6IChldmVudDogeyB3YWl0VW50aWwocHJvbWlzZTogUHJvbWlzZTx1bmtub3duPik6IHZvaWQgfSkgPT4gdm9pZCxcclxuICApOiB2b2lkO1xyXG59O1xyXG5cclxuc2VsZi5hZGRFdmVudExpc3RlbmVyKCdpbnN0YWxsJywgZXZlbnQgPT4ge1xyXG4gIGV2ZW50LndhaXRVbnRpbChzZWxmLnNraXBXYWl0aW5nKCkpO1xyXG59KTtcclxuXHJcbnNlbGYuYWRkRXZlbnRMaXN0ZW5lcignYWN0aXZhdGUnLCBldmVudCA9PiB7XHJcbiAgZXZlbnQud2FpdFVudGlsKHNlbGYuY2xpZW50cy5jbGFpbSgpKTtcclxufSk7XHJcblxyXG5leHBvcnQge307XHJcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//#
sourceURL=webpack-internal:///./src/service-worker.ts\n\n}");
+
+/***/ }
+
+/******/ });
+/************************************************************************/
+/******/ // The module cache
+/******/ var __webpack_module_cache__ = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/ // Check if module is in cache
+/******/ var cachedModule = __webpack_module_cache__[moduleId];
+/******/ if (cachedModule !== undefined) {
+/******/ return cachedModule.exports;
+/******/ }
+/******/ // Check if module exists (development only)
+/******/ if (__webpack_modules__[moduleId] === undefined) {
+/******/ var e = new Error("Cannot find module '" +
moduleId + "'");
+/******/ e.code = 'MODULE_NOT_FOUND';
+/******/ throw e;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = __webpack_module_cache__[moduleId] = {
+/******/ id: moduleId,
+/******/ loaded: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ var execOptions = { id: moduleId, module: module,
factory: __webpack_modules__[moduleId], require: __webpack_require__ };
+/******/ __webpack_require__.i.forEach(function(handler) {
handler(execOptions); });
+/******/ module = execOptions.module;
+/******/ execOptions.factory.call(module.exports, module,
module.exports, execOptions.require);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.loaded = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = __webpack_modules__;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = __webpack_module_cache__;
+/******/
+/******/ // expose the module execution interceptor
+/******/ __webpack_require__.i = [];
+/******/
+/************************************************************************/
+/******/ /* webpack/runtime/chunk loaded */
+/******/ (() => {
+/******/ var deferred = [];
+/******/ __webpack_require__.O = (result, chunkIds, fn,
priority) => {
+/******/ if(chunkIds) {
+/******/ priority = priority || 0;
+/******/ for(var i = deferred.length; i > 0 &&
deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];
+/******/ deferred[i] = [chunkIds, fn, priority];
+/******/ return;
+/******/ }
+/******/ var notFulfilled = Infinity;
+/******/ for (var i = 0; i < deferred.length; i++) {
+/******/ var [chunkIds, fn, priority] =
deferred[i];
+/******/ var fulfilled = true;
+/******/ for (var j = 0; j < chunkIds.length;
j++) {
+/******/ if ((priority & 1 === 0 ||
notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) =>
(__webpack_require__.O[key](chunkIds[j])))) {
+/******/ chunkIds.splice(j--, 1);
+/******/ } else {
+/******/ fulfilled = false;
+/******/ if(priority <
notFulfilled) notFulfilled = priority;
+/******/ }
+/******/ }
+/******/ if(fulfilled) {
+/******/ deferred.splice(i--, 1)
+/******/ var r = fn();
+/******/ if (r !== undefined) result = r;
+/******/ }
+/******/ }
+/******/ return result;
+/******/ };
+/******/ })();
+/******/
+/******/ /* webpack/runtime/compat get default export */
+/******/ (() => {
+/******/ // getDefaultExport function for compatibility with
non-harmony modules
+/******/ __webpack_require__.n = (module) => {
+/******/ var getter = module && module.__esModule ?
+/******/ () => (module['default']) :
+/******/ () => (module);
+/******/ __webpack_require__.d(getter, { a: getter });
+/******/ return getter;
+/******/ };
+/******/ })();
+/******/
+/******/ /* webpack/runtime/create fake namespace object */
+/******/ (() => {
+/******/ var getProto = Object.getPrototypeOf ? (obj) =>
(Object.getPrototypeOf(obj)) : (obj) => (obj.__proto__);
+/******/ var leafPrototypes;
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 16: return value when it's Promise-like
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = this(value);
+/******/ if(mode & 8) return value;
+/******/ if(typeof value === 'object' && value) {
+/******/ if((mode & 4) && value.__esModule)
return value;
+/******/ if((mode & 16) && typeof value.then ===
'function') return value;
+/******/ }
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ var def = {};
+/******/ leafPrototypes = leafPrototypes || [null,
getProto({}), getProto([]), getProto(getProto)];
+/******/ for(var current = mode & 2 && value; (typeof
current == 'object' || typeof current == 'function') &&
!~leafPrototypes.indexOf(current); current = getProto(current)) {
+/******/
Object.getOwnPropertyNames(current).forEach((key) => (def[key] = () =>
(value[key])));
+/******/ }
+/******/ def['default'] = () => (value);
+/******/ __webpack_require__.d(ns, def);
+/******/ return ns;
+/******/ };
+/******/ })();
+/******/
+/******/ /* webpack/runtime/define property getters */
+/******/ (() => {
+/******/ // define getter functions for harmony exports
+/******/ __webpack_require__.d = (exports, definition) => {
+/******/ for(var key in definition) {
+/******/ if(__webpack_require__.o(definition,
key) && !__webpack_require__.o(exports, key)) {
+/******/ Object.defineProperty(exports,
key, { enumerable: true, get: definition[key] });
+/******/ }
+/******/ }
+/******/ };
+/******/ })();
+/******/
+/******/ /* webpack/runtime/harmony module decorator */
+/******/ (() => {
+/******/ __webpack_require__.hmd = (module) => {
+/******/ module = Object.create(module);
+/******/ if (!module.children) module.children = [];
+/******/ Object.defineProperty(module, 'exports', {
+/******/ enumerable: true,
+/******/ set: () => {
+/******/ throw new Error('ES Modules may
not assign module.exports or exports.*, Use ESM export syntax, instead: ' +
module.id);
+/******/ }
+/******/ });
+/******/ return module;
+/******/ };
+/******/ })();
+/******/
+/******/ /* webpack/runtime/hasOwnProperty shorthand */
+/******/ (() => {
+/******/ __webpack_require__.o = (obj, prop) =>
(Object.prototype.hasOwnProperty.call(obj, prop))
+/******/ })();
+/******/
+/******/ /* webpack/runtime/make namespace object */
+/******/ (() => {
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = (exports) => {
+/******/ if(typeof Symbol !== 'undefined' &&
Symbol.toStringTag) {
+/******/ Object.defineProperty(exports,
Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', {
value: true });
+/******/ };
+/******/ })();
+/******/
+/******/ /* webpack/runtime/sharing */
+/******/ (() => {
+/******/ __webpack_require__.S = {};
+/******/ var initPromises = {};
+/******/ var initTokens = {};
+/******/ __webpack_require__.I = (name, initScope) => {
+/******/ if(!initScope) initScope = [];
+/******/ // handling circular init calls
+/******/ var initToken = initTokens[name];
+/******/ if(!initToken) initToken = initTokens[name] =
{};
+/******/ if(initScope.indexOf(initToken) >= 0) return;
+/******/ initScope.push(initToken);
+/******/ // only runs once
+/******/ if(initPromises[name]) return
initPromises[name];
+/******/ // creates a new share scope if needed
+/******/
if(!__webpack_require__.o(__webpack_require__.S, name))
__webpack_require__.S[name] = {};
+/******/ // runs all init snippets from all modules
reachable
+/******/ var scope = __webpack_require__.S[name];
+/******/ var warn = (msg) => {
+/******/ if (typeof console !== "undefined" &&
console.warn) console.warn(msg);
+/******/ };
+/******/ var uniqueName = "superset";
+/******/ var register = (name, version, factory, eager)
=> {
+/******/ var versions = scope[name] =
scope[name] || {};
+/******/ var activeVersion = versions[version];
+/******/ if(!activeVersion ||
(!activeVersion.loaded && (!eager != !activeVersion.eager ? eager : uniqueName
> activeVersion.from))) versions[version] = { get: factory, from: uniqueName,
eager: !!eager };
+/******/ };
+/******/ var initExternal = (id) => {
+/******/ var handleError = (err) =>
(warn("Initialization of sharing external failed: " + err));
+/******/ try {
+/******/ var module =
__webpack_require__(id);
+/******/ if(!module) return;
+/******/ var initFn = (module) =>
(module && module.init && module.init(__webpack_require__.S[name], initScope))
+/******/ if(module.then) return
promises.push(module.then(initFn, handleError));
+/******/ var initResult = initFn(module);
+/******/ if(initResult &&
initResult.then) return promises.push(initResult['catch'](handleError));
+/******/ } catch(err) { handleError(err); }
+/******/ }
+/******/ var promises = [];
+/******/ switch(name) {
+/******/ case "default": {
+/******/ register("antd", "5.27.6", ()
=> (() => (__webpack_require__(/*! ./node_modules/antd/es/index.js */
"./node_modules/antd/es/index.js"))), 1);
+/******/ register("react-dom", "17.0.2",
() => (() => (__webpack_require__(/*! ./node_modules/react-dom/index.js */
"./node_modules/react-dom/index.js"))), 1);
+/******/ register("react", "17.0.2", ()
=> (() => (__webpack_require__(/*! ./node_modules/react/index.js */
"./node_modules/react/index.js"))), 1);
+/******/ }
+/******/ break;
+/******/ }
+/******/ if(!promises.length) return initPromises[name]
= 1;
+/******/ return initPromises[name] =
Promise.all(promises).then(() => (initPromises[name] = 1));
+/******/ };
+/******/ })();
+/******/
+/******/ /* webpack/runtime/react refresh */
+/******/ (() => {
+/******/ const setup = (moduleId) => {
+/******/ const refresh = {
+/******/ moduleId: moduleId,
+/******/ register: (type, id) => {
+/******/ const typeId = moduleId + ' ' +
id;
+/******/ refresh.runtime.register(type,
typeId);
+/******/ },
+/******/ signature: () =>
(refresh.runtime.createSignatureFunctionForTransform()),
+/******/ runtime: {
+/******/
createSignatureFunctionForTransform: () => ((type) => (type)),
+/******/ register: x => {}
+/******/ },
+/******/ };
+/******/ return refresh;
+/******/ };
+/******/
+/******/ __webpack_require__.i.push((options) => {
+/******/ const originalFactory = options.factory;
+/******/ options.factory = function(moduleObject,
moduleExports, webpackRequire) {
+/******/ const hotRequire = (request) =>
(webpackRequire(request));
+/******/ const createPropertyDescriptor = (name)
=> {
+/******/ return {
+/******/ configurable: true,
+/******/ enumerable: true,
+/******/ get: () =>
(webpackRequire[name]),
+/******/ set: (value) => {
+/******/
webpackRequire[name] = value;
+/******/ },
+/******/ };
+/******/ };
+/******/ for (const name in webpackRequire) {
+/******/ if (name === "$Refresh$")
continue;
+/******/ if
(Object.prototype.hasOwnProperty.call(webpackRequire, name)) {
+/******/
Object.defineProperty(hotRequire, name, createPropertyDescriptor(name));
+/******/ }
+/******/ }
+/******/ hotRequire.$Refresh$ =
setup(options.id);
+/******/ originalFactory.call(this,
moduleObject, moduleExports, hotRequire);
+/******/ };
+/******/ });
+/******/ })();
+/******/
+/******/ /* webpack/runtime/consumes */
+/******/ (() => {
+/******/ var parseVersion = (str) => {
+/******/ // see webpack/lib/util/semver.js for original
code
+/******/ var p=p=>{return
p.split(".").map(p=>{return+p==p?+p:p})},n=/^([^-+]+)?(?:-([^+]+))?(?:\+(.+))?$/.exec(str),r=n[1]?p(n[1]):[];return
n[2]&&(r.length++,r.push.apply(r,p(n[2]))),n[3]&&(r.push([]),r.push.apply(r,p(n[3]))),r;
+/******/ }
+/******/ var versionLt = (a, b) => {
+/******/ // see webpack/lib/util/semver.js for original
code
+/******/ a=parseVersion(a),b=parseVersion(b);for(var
r=0;;){if(r>=a.length)return r<b.length&&"u"!=(typeof b[r])[0];var
e=a[r],n=(typeof e)[0];if(r>=b.length)return"u"==n;var t=b[r],f=(typeof
t)[0];if(n!=f)return"o"==n&&"n"==f||("s"==f||"u"==n);if("o"!=n&&"u"!=n&&e!=t)return
e<t;r++}
+/******/ }
+/******/ var rangeToString = (range) => {
+/******/ // see webpack/lib/util/semver.js for original
code
+/******/ var
r=range[0],n="";if(1===range.length)return"*";if(r+.5){n+=0==r?">=":-1==r?"<":1==r?"^":2==r?"~":r>0?"=":"!=";for(var
e=1,a=1;a<range.length;a++){e--,n+="u"==(typeof(t=range[a]))[0]?"-":(e>0?".":"")+(e=2,t)}return
n}var g=[];for(a=1;a<range.length;a++){var
t=range[a];g.push(0===t?"not("+o()+")":1===t?"("+o()+" ||
"+o()+")":2===t?g.pop()+" "+g.pop():rangeToString(t))}return o();function
o(){return g.pop().replace(/^\((.+)\)$/,"$1")}
+/******/ }
+/******/ var satisfy = (range, version) => {
+/******/ // see webpack/lib/util/semver.js for original
code
+/******/ if(0 in
range){version=parseVersion(version);var e=range[0],r=e<0;r&&(e=-e-1);for(var
n=0,i=1,a=!0;;i++,n++){var f,s,g=i<range.length?(typeof
range[i])[0]:"";if(n>=version.length||"o"==(s=(typeof(f=version[n]))[0]))return!a||("u"==g?i>e&&!r:""==g!=r);if("u"==s){if(!a||"u"!=g)return!1}else
if(a)if(g==s)if(i<=e){if(f!=range[i])return!1}else{if(r?f>range[i]:f<range[i])return!1;f!=range[i]&&(a=!1)}else
if("s"!=g&&"n"!=g){if(r||i<=e)return!1;a=!1,i--}else{if(i<=e||s<g!=r)return!1;a=!1}else"s"!=g&&"n"!=g&&(a=!1,i--)}}var
t=[],o=t.pop.bind(t);for(n=1;n<range.length;n++){var
u=range[n];t.push(1==u?o()|o():2==u?o()&o():u?satisfy(u,version):!o())}return!!o();
+/******/ }
+/******/ var exists = (scope, key) => {
+/******/ return scope && __webpack_require__.o(scope,
key);
+/******/ }
+/******/ var get = (entry) => {
+/******/ entry.loaded = 1;
+/******/ return entry.get()
+/******/ };
+/******/ var eagerOnly = (versions) => {
+/******/ return Object.keys(versions).reduce((filtered,
version) => {
+/******/ if (versions[version].eager) {
+/******/ filtered[version] =
versions[version];
+/******/ }
+/******/ return filtered;
+/******/ }, {});
+/******/ };
+/******/ var findLatestVersion = (scope, key, eager) => {
+/******/ var versions = eager ? eagerOnly(scope[key]) :
scope[key];
+/******/ var key = Object.keys(versions).reduce((a, b)
=> {
+/******/ return !a || versionLt(a, b) ? b : a;
+/******/ }, 0);
+/******/ return key && versions[key];
+/******/ };
+/******/ var findSatisfyingVersion = (scope, key,
requiredVersion, eager) => {
+/******/ var versions = eager ? eagerOnly(scope[key]) :
scope[key];
+/******/ var key = Object.keys(versions).reduce((a, b)
=> {
+/******/ if (!satisfy(requiredVersion, b))
return a;
+/******/ return !a || versionLt(a, b) ? b : a;
+/******/ }, 0);
+/******/ return key && versions[key]
+/******/ };
+/******/ var findSingletonVersionKey = (scope, key, eager) => {
+/******/ var versions = eager ? eagerOnly(scope[key]) :
scope[key];
+/******/ return Object.keys(versions).reduce((a, b) => {
+/******/ return !a || (!versions[a].loaded &&
versionLt(a, b)) ? b : a;
+/******/ }, 0);
+/******/ };
+/******/ var getInvalidSingletonVersionMessage = (scope, key,
version, requiredVersion) => {
+/******/ return "Unsatisfied version " + version + "
from " + (version && scope[key][version].from) + " of shared singleton module "
+ key + " (required " + rangeToString(requiredVersion) + ")"
+/******/ };
+/******/ var getInvalidVersionMessage = (scope, scopeName, key,
requiredVersion, eager) => {
+/******/ var versions = scope[key];
+/******/ return "No satisfying version (" +
rangeToString(requiredVersion) + ")" + (eager ? " for eager consumption" : "")
+ " of shared module " + key + " found in shared scope " + scopeName + ".\n" +
+/******/ "Available versions: " +
Object.keys(versions).map((key) => {
+/******/ return key + " from " +
versions[key].from;
+/******/ }).join(", ");
+/******/ };
+/******/ var fail = (msg) => {
+/******/ throw new Error(msg);
+/******/ }
+/******/ var failAsNotExist = (scopeName, key) => {
+/******/ return fail("Shared module " + key + " doesn't
exist in shared scope " + scopeName);
+/******/ }
+/******/ var warn = /*#__PURE__*/ (msg) => {
+/******/ if (typeof console !== "undefined" &&
console.warn) console.warn(msg);
+/******/ };
+/******/ var init = (fn) => (function(scopeName, key, eager, c,
d) {
+/******/ var promise = __webpack_require__.I(scopeName);
+/******/ if (promise && promise.then && !eager) {
+/******/ return promise.then(fn.bind(fn,
scopeName, __webpack_require__.S[scopeName], key, false, c, d));
+/******/ }
+/******/ return fn(scopeName,
__webpack_require__.S[scopeName], key, eager, c, d);
+/******/ });
+/******/
+/******/ var useFallback = (scopeName, key, fallback) => {
+/******/ return fallback ? fallback() :
failAsNotExist(scopeName, key);
+/******/ }
+/******/ var load = /*#__PURE__*/ init((scopeName, scope, key,
eager, fallback) => {
+/******/ if (!exists(scope, key)) return
useFallback(scopeName, key, fallback);
+/******/ return get(findLatestVersion(scope, key,
eager));
+/******/ });
+/******/ var loadVersion = /*#__PURE__*/ init((scopeName, scope,
key, eager, requiredVersion, fallback) => {
+/******/ if (!exists(scope, key)) return
useFallback(scopeName, key, fallback);
+/******/ var satisfyingVersion =
findSatisfyingVersion(scope, key, requiredVersion, eager);
+/******/ if (satisfyingVersion) return
get(satisfyingVersion);
+/******/ warn(getInvalidVersionMessage(scope, scopeName,
key, requiredVersion, eager))
+/******/ return get(findLatestVersion(scope, key,
eager));
+/******/ });
+/******/ var loadStrictVersion = /*#__PURE__*/ init((scopeName,
scope, key, eager, requiredVersion, fallback) => {
+/******/ if (!exists(scope, key)) return
useFallback(scopeName, key, fallback);
+/******/ var satisfyingVersion =
findSatisfyingVersion(scope, key, requiredVersion, eager);
+/******/ if (satisfyingVersion) return
get(satisfyingVersion);
+/******/ if (fallback) return fallback();
+/******/ fail(getInvalidVersionMessage(scope, scopeName,
key, requiredVersion, eager));
+/******/ });
+/******/ var loadSingleton = /*#__PURE__*/ init((scopeName,
scope, key, eager, fallback) => {
+/******/ if (!exists(scope, key)) return
useFallback(scopeName, key, fallback);
+/******/ var version = findSingletonVersionKey(scope,
key, eager);
+/******/ return get(scope[key][version]);
+/******/ });
+/******/ var loadSingletonVersion = /*#__PURE__*/
init((scopeName, scope, key, eager, requiredVersion, fallback) => {
+/******/ if (!exists(scope, key)) return
useFallback(scopeName, key, fallback);
+/******/ var version = findSingletonVersionKey(scope,
key, eager);
+/******/ if (!satisfy(requiredVersion, version)) {
+/******/
warn(getInvalidSingletonVersionMessage(scope, key, version, requiredVersion));
+/******/ }
+/******/ return get(scope[key][version]);
+/******/ });
+/******/ var loadStrictSingletonVersion = /*#__PURE__*/
init((scopeName, scope, key, eager, requiredVersion, fallback) => {
+/******/ if (!exists(scope, key)) return
useFallback(scopeName, key, fallback);
+/******/ var version = findSingletonVersionKey(scope,
key, eager);
+/******/ if (!satisfy(requiredVersion, version)) {
+/******/
fail(getInvalidSingletonVersionMessage(scope, key, version, requiredVersion));
+/******/ }
+/******/ return get(scope[key][version]);
+/******/ });
+/******/ var installedModules = {};
+/******/ var moduleToHandlerMapping = {
+/******/
"webpack/sharing/consume/default/react-dom/react-dom": () =>
(loadSingletonVersion("default", "react-dom", true, [1,17,0,2], () => (() =>
(__webpack_require__(/*! react-dom */ "./node_modules/react-dom/index.js"))))),
+/******/ "webpack/sharing/consume/default/react/react":
() => (loadSingletonVersion("default", "react", true, [1,17,0,2], () => (() =>
(__webpack_require__(/*! react */ "./node_modules/react/index.js")))))
+/******/ };
+/******/ var initialConsumes =
["webpack/sharing/consume/default/react-dom/react-dom","webpack/sharing/consume/default/react/react"];
+/******/ initialConsumes.forEach((id) => {
+/******/ __webpack_require__.m[id] = (module) => {
+/******/ // Handle case when module is used sync
+/******/ installedModules[id] = 0;
+/******/ delete __webpack_require__.c[id];
+/******/ var factory =
moduleToHandlerMapping[id]();
+/******/ if(typeof factory !== "function") throw
new Error("Shared module is not available for eager consumption: " + id);
+/******/ module.exports = factory();
Review Comment:
<div>
<div id="suggestion">
<div id="issue"><b>Incompatible Module Consumption</b></div>
<div id="fix">
The added webpack Module Federation code consumes React and ReactDOM in the
service worker, but service workers run in a non-DOM environment where these
libraries cannot function, leading to runtime errors.
</div>
</div>
<small><i>Code Review Run #d91605</i></small>
</div>
---
Should Bito avoid suggestions like this for future reviews? (<a
href=https://alpha.bito.ai/home/ai-agents/review-rules>Manage Rules</a>)
- [ ] Yes, avoid them
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]