@optimizely/ocp-local-env 1.0.0-beta.10 → 1.0.0-beta.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/package.json +3 -2
- package/dist/public/bundle.3635644676e802b826a8.js +3 -0
- package/dist/public/{bundle.82dc5d29fffb9f205051.js.LICENSE.txt → bundle.3635644676e802b826a8.js.LICENSE.txt} +9 -3
- package/dist/public/bundle.3635644676e802b826a8.js.map +1 -0
- package/dist/public/index.html +1 -1
- package/dist/src/local_engine/local-engine-client.js +1 -0
- package/dist/src/local_engine/local-engine-client.js.map +1 -1
- package/dist/src/local_engine/local-engine-unified.js +14 -0
- package/dist/src/local_engine/local-engine-unified.js.map +1 -1
- package/dist/src/server/api/functions.js +5 -2
- package/dist/src/server/api/functions.js.map +1 -1
- package/dist/src/server/api/opalTools.d.ts +4 -0
- package/dist/src/server/api/opalTools.js +81 -0
- package/dist/src/server/api/opalTools.js.map +1 -0
- package/dist/src/server/api.js +8 -1
- package/dist/src/server/api.js.map +1 -1
- package/dist/src/server/mockToolDataGenerator.d.ts +12 -0
- package/dist/src/server/mockToolDataGenerator.js +351 -0
- package/dist/src/server/mockToolDataGenerator.js.map +1 -0
- package/dist/src/ui/components/App.js +5 -3
- package/dist/src/ui/components/App.js.map +1 -1
- package/dist/src/ui/components/DestinationBatchEditor.d.ts +9 -1
- package/dist/src/ui/components/DestinationBatchEditor.js +12 -4
- package/dist/src/ui/components/DestinationBatchEditor.js.map +1 -1
- package/dist/src/ui/components/DestinationsView.js +5 -1
- package/dist/src/ui/components/DestinationsView.js.map +1 -1
- package/dist/src/ui/components/EntityNotAvailable.d.ts +15 -0
- package/dist/src/ui/components/EntityNotAvailable.js +27 -0
- package/dist/src/ui/components/EntityNotAvailable.js.map +1 -0
- package/dist/src/ui/components/FunctionsView.d.ts +1 -6
- package/dist/src/ui/components/FunctionsView.js +21 -47
- package/dist/src/ui/components/FunctionsView.js.map +1 -1
- package/dist/src/ui/components/JobsView.js +4 -4
- package/dist/src/ui/components/JobsView.js.map +1 -1
- package/dist/src/ui/components/KVStoreViewer.js +5 -5
- package/dist/src/ui/components/KVStoreViewer.js.map +1 -1
- package/dist/src/ui/components/KeyValueEditor.d.ts +15 -0
- package/dist/src/ui/components/KeyValueEditor.js +12 -0
- package/dist/src/ui/components/KeyValueEditor.js.map +1 -0
- package/dist/src/ui/components/NotificationViewer.js +8 -7
- package/dist/src/ui/components/NotificationViewer.js.map +1 -1
- package/dist/src/ui/components/OpalToolsView.d.ts +8 -0
- package/dist/src/ui/components/OpalToolsView.js +262 -0
- package/dist/src/ui/components/OpalToolsView.js.map +1 -0
- package/dist/src/ui/components/ResponseViewer.d.ts +39 -0
- package/dist/src/ui/components/ResponseViewer.js +43 -0
- package/dist/src/ui/components/ResponseViewer.js.map +1 -0
- package/dist/src/ui/components/SecretsStoreViewer.js +3 -2
- package/dist/src/ui/components/SecretsStoreViewer.js.map +1 -1
- package/dist/src/ui/components/SettingsStoreViewer.js +3 -2
- package/dist/src/ui/components/SettingsStoreViewer.js.map +1 -1
- package/dist/src/ui/components/StoreViewer.js +2 -1
- package/dist/src/ui/components/StoreViewer.js.map +1 -1
- package/dist/src/ui/components/TabbedConsole.js +2 -1
- package/dist/src/ui/components/TabbedConsole.js.map +1 -1
- package/dist/src/ui/hooks/useKeyValuePairs.d.ts +52 -0
- package/dist/src/ui/hooks/useKeyValuePairs.js +66 -0
- package/dist/src/ui/hooks/useKeyValuePairs.js.map +1 -0
- package/dist/src/ui/store/formStateSlice.d.ts +11 -1
- package/dist/src/ui/store/formStateSlice.js +26 -3
- package/dist/src/ui/store/formStateSlice.js.map +1 -1
- package/dist/src/ui/types/common.d.ts +33 -0
- package/dist/src/ui/types/common.js +6 -0
- package/dist/src/ui/types/common.js.map +1 -0
- package/package.json +3 -2
- package/dist/public/bundle.82dc5d29fffb9f205051.js +0 -3
- package/dist/public/bundle.82dc5d29fffb9f205051.js.map +0 -1
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
4
|
+
/**
|
|
5
|
+
* Reusable key-value pair editor component.
|
|
6
|
+
* Used for editing request params and headers in FunctionsView, OpalToolsView, etc.
|
|
7
|
+
*/
|
|
8
|
+
const KeyValueEditor = ({ items, onAdd, onUpdate, onRemove, addButtonLabel, }) => {
|
|
9
|
+
return ((0, jsx_runtime_1.jsxs)("div", { className: "key-value-editor", children: [(0, jsx_runtime_1.jsxs)("div", { className: "key-value-header", children: [(0, jsx_runtime_1.jsx)("span", { className: "col-checkbox" }), (0, jsx_runtime_1.jsx)("span", { className: "col-key", children: "Key" }), (0, jsx_runtime_1.jsx)("span", { className: "col-value", children: "Value" }), (0, jsx_runtime_1.jsx)("span", { className: "col-actions" })] }), items.map((item, index) => ((0, jsx_runtime_1.jsxs)("div", { className: "key-value-row", children: [(0, jsx_runtime_1.jsx)("input", { type: "checkbox", checked: item.enabled, onChange: (e) => onUpdate(index, 'enabled', e.target.checked) }), (0, jsx_runtime_1.jsx)("input", { type: "text", value: item.key, onChange: (e) => onUpdate(index, 'key', e.target.value), placeholder: "Key" }), (0, jsx_runtime_1.jsx)("input", { type: "text", value: item.value, onChange: (e) => onUpdate(index, 'value', e.target.value), placeholder: "Value" }), (0, jsx_runtime_1.jsx)("button", { className: "remove-btn", onClick: () => onRemove(index), children: "\u00D7" })] }, index))), (0, jsx_runtime_1.jsx)("button", { className: "add-btn", onClick: onAdd, children: addButtonLabel })] }));
|
|
10
|
+
};
|
|
11
|
+
exports.default = KeyValueEditor;
|
|
12
|
+
//# sourceMappingURL=KeyValueEditor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"KeyValueEditor.js","sourceRoot":"","sources":["../../../../src/ui/components/KeyValueEditor.tsx"],"names":[],"mappings":";;;AAWA;;;GAGG;AACH,MAAM,cAAc,GAAkC,CAAC,EACrD,KAAK,EACL,KAAK,EACL,QAAQ,EACR,QAAQ,EACR,cAAc,GACf,EAAE,EAAE;IACH,OAAO,CACL,iCAAK,SAAS,EAAC,kBAAkB,aAC/B,iCAAK,SAAS,EAAC,kBAAkB,aAC/B,iCAAM,SAAS,EAAC,cAAc,GAAQ,EACtC,iCAAM,SAAS,EAAC,SAAS,oBAAW,EACpC,iCAAM,SAAS,EAAC,WAAW,sBAAa,EACxC,iCAAM,SAAS,EAAC,aAAa,GAAQ,IACjC,EACL,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAC1B,iCAAiB,SAAS,EAAC,eAAe,aACxC,kCACE,IAAI,EAAC,UAAU,EACf,OAAO,EAAE,IAAI,CAAC,OAAO,EACrB,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,GAC7D,EACF,kCACE,IAAI,EAAC,MAAM,EACX,KAAK,EAAE,IAAI,CAAC,GAAG,EACf,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EACvD,WAAW,EAAC,KAAK,GACjB,EACF,kCACE,IAAI,EAAC,MAAM,EACX,KAAK,EAAE,IAAI,CAAC,KAAK,EACjB,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EACzD,WAAW,EAAC,OAAO,GACnB,EACF,mCACE,SAAS,EAAC,YAAY,EACtB,OAAO,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,uBAGvB,KAvBD,KAAK,CAwBT,CACP,CAAC,EACF,mCACE,SAAS,EAAC,SAAS,EACnB,OAAO,EAAE,KAAK,YAEb,cAAc,GACR,IACL,CACP,CAAC;AACJ,CAAC,CAAC;AAEF,kBAAe,cAAc,CAAC"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
4
|
+
const axiom_icons_1 = require("@optimizely/axiom-icons");
|
|
4
5
|
const react_1 = require("react");
|
|
5
6
|
const NotificationViewer = ({ notifications, onRefresh }) => {
|
|
6
7
|
const [expandedNotifications, setExpandedNotifications] = (0, react_1.useState)(new Set());
|
|
@@ -48,21 +49,21 @@ const NotificationViewer = ({ notifications, onRefresh }) => {
|
|
|
48
49
|
};
|
|
49
50
|
const getStatusIcon = (status) => {
|
|
50
51
|
switch (status) {
|
|
51
|
-
case 'info': return
|
|
52
|
-
case 'success': return
|
|
53
|
-
case 'warn': return
|
|
54
|
-
case 'error': return
|
|
55
|
-
default: return
|
|
52
|
+
case 'info': return (0, jsx_runtime_1.jsx)(axiom_icons_1.IconCircleInfo, { size: "2xs" });
|
|
53
|
+
case 'success': return (0, jsx_runtime_1.jsx)(axiom_icons_1.IconCircleCheck, { size: "2xs" });
|
|
54
|
+
case 'warn': return (0, jsx_runtime_1.jsx)(axiom_icons_1.IconCircleExclamation, { size: "2xs" });
|
|
55
|
+
case 'error': return (0, jsx_runtime_1.jsx)(axiom_icons_1.IconCircleXmark, { size: "2xs" });
|
|
56
|
+
default: return (0, jsx_runtime_1.jsx)(axiom_icons_1.IconCircleInfo, { size: "2xs" });
|
|
56
57
|
}
|
|
57
58
|
};
|
|
58
59
|
// Sort notifications by timestamp (newest first)
|
|
59
60
|
const sortedNotifications = [...notifications].sort((a, b) => new Date(b.timestamp).getTime() - new Date(a.timestamp).getTime());
|
|
60
61
|
return ((0, jsx_runtime_1.jsxs)("div", { className: "notification-viewer", children: [(0, jsx_runtime_1.jsxs)("div", { className: "notification-controls", children: [(0, jsx_runtime_1.jsx)("button", { className: "clear-notifications-btn", onClick: clearAllNotifications, children: "Clear All" }), onRefresh && ((0, jsx_runtime_1.jsx)("button", { className: "refresh-notifications-btn", onClick: onRefresh, children: "Refresh" }))] }), (0, jsx_runtime_1.jsx)("div", { className: "notification-list", children: sortedNotifications.length > 0 ? (sortedNotifications.map((notification) => {
|
|
61
62
|
const isExpanded = expandedNotifications.has(notification.id);
|
|
62
|
-
return ((0, jsx_runtime_1.jsxs)("div", { className: `notification-item notification-${notification.status}`, children: [(0, jsx_runtime_1.jsxs)("div", { className: "notification-header", onClick: () => toggleNotification(notification.id), children: [(0, jsx_runtime_1.jsx)("div", { className: "notification-main", children: (0, jsx_runtime_1.jsxs)("div", { className: "notification-single-line", children: [
|
|
63
|
+
return ((0, jsx_runtime_1.jsxs)("div", { className: `notification-item notification-${notification.status}`, children: [(0, jsx_runtime_1.jsxs)("div", { className: "notification-header", onClick: () => toggleNotification(notification.id), children: [(0, jsx_runtime_1.jsx)("div", { className: "notification-main", children: (0, jsx_runtime_1.jsxs)("div", { className: "notification-single-line", children: [getStatusIcon(notification.status), (0, jsx_runtime_1.jsx)("span", { className: "notification-activity", children: notification.activity }), (0, jsx_runtime_1.jsx)("span", { className: "notification-separator", children: "\u2022" }), (0, jsx_runtime_1.jsx)("span", { className: "notification-title", children: notification.title }), (0, jsx_runtime_1.jsx)("span", { className: "notification-separator", children: "\u2022" }), (0, jsx_runtime_1.jsx)("span", { className: "notification-summary", children: notification.summary }), (0, jsx_runtime_1.jsx)("span", { className: "notification-timestamp", children: formatTimestamp(notification.timestamp) })] }) }), (0, jsx_runtime_1.jsxs)("div", { className: "notification-actions", children: [(0, jsx_runtime_1.jsx)("button", { className: "delete-notification-btn", onClick: (e) => {
|
|
63
64
|
e.stopPropagation();
|
|
64
65
|
deleteNotification(notification.id);
|
|
65
|
-
}, title: "Delete notification", children: "
|
|
66
|
+
}, title: "Delete notification", children: (0, jsx_runtime_1.jsx)(axiom_icons_1.IconTrashCan, { size: "2xs" }) }), (0, jsx_runtime_1.jsx)("span", { className: "expand-icon", children: isExpanded ? (0, jsx_runtime_1.jsx)(axiom_icons_1.IconAngleDown, { size: "2xs" }) : (0, jsx_runtime_1.jsx)(axiom_icons_1.IconAngleRight, { size: "2xs" }) })] })] }), isExpanded && notification.details && ((0, jsx_runtime_1.jsx)("div", { className: "notification-details", children: (0, jsx_runtime_1.jsx)("pre", { children: notification.details }) }))] }, notification.id));
|
|
66
67
|
})) : ((0, jsx_runtime_1.jsx)("div", { className: "no-notifications", children: "No notifications yet" })) })] }));
|
|
67
68
|
};
|
|
68
69
|
exports.default = NotificationViewer;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NotificationViewer.js","sourceRoot":"","sources":["../../../../src/ui/components/NotificationViewer.tsx"],"names":[],"mappings":";;;AAAA,iCAAwC;AAiBxC,MAAM,kBAAkB,GAAsC,CAAC,EAC7D,aAAa,EACb,SAAS,EACV,EAAE,EAAE;IACH,MAAM,CAAC,qBAAqB,EAAE,wBAAwB,CAAC,GAAG,IAAA,gBAAQ,EAAc,IAAI,GAAG,EAAE,CAAC,CAAC;IAE3F,MAAM,kBAAkB,GAAG,CAAC,EAAU,EAAE,EAAE;QACxC,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,qBAAqB,CAAC,CAAC;QACnD,IAAI,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;YACxB,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACzB,CAAC;aAAM,CAAC;YACN,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACtB,CAAC;QACD,wBAAwB,CAAC,WAAW,CAAC,CAAC;IACxC,CAAC,CAAC;IAEF,MAAM,qBAAqB,GAAG,KAAK,IAAI,EAAE;QACvC,IAAI,CAAC,OAAO,CAAC,mDAAmD,CAAC,EAAE,CAAC;YAClE,OAAO;QACT,CAAC;QAED,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,qCAAqC,EAAE;gBAClE,MAAM,EAAE,QAAQ;aACjB,CAAC,CAAC;YAEH,IAAI,QAAQ,CAAC,EAAE,IAAI,SAAS,EAAE,CAAC;gBAC7B,SAAS,EAAE,CAAC;YACd,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,+BAA+B,EAAE,KAAK,CAAC,CAAC;QACxD,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,kBAAkB,GAAG,KAAK,EAAE,EAAU,EAAE,EAAE;QAC9C,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,uCAAuC,EAAE,EAAE,EAAE;gBACxE,MAAM,EAAE,QAAQ;aACjB,CAAC,CAAC;YAEH,IAAI,QAAQ,CAAC,EAAE,IAAI,SAAS,EAAE,CAAC;gBAC7B,SAAS,EAAE,CAAC;YACd,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,8BAA8B,EAAE,KAAK,CAAC,CAAC;QACvD,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,eAAe,GAAG,CAAC,SAAiB,EAAE,EAAE;QAC5C,OAAO,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,cAAc,EAAE,CAAC;IAC9C,CAAC,CAAC;IAEF,MAAM,aAAa,GAAG,CAAC,MAAc,EAAE,EAAE;QACvC,QAAQ,MAAM,EAAE,CAAC;YACf,KAAK,MAAM,CAAC,CAAC,OAAO,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"NotificationViewer.js","sourceRoot":"","sources":["../../../../src/ui/components/NotificationViewer.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,262 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
7
|
+
const react_1 = require("react");
|
|
8
|
+
const react_router_dom_1 = require("react-router-dom");
|
|
9
|
+
const useEntityNavigation_1 = require("../hooks/useEntityNavigation");
|
|
10
|
+
const useQueryParams_1 = require("../hooks/useQueryParams");
|
|
11
|
+
const useKeyValuePairs_1 = require("../hooks/useKeyValuePairs");
|
|
12
|
+
const hooks_1 = require("../store/hooks");
|
|
13
|
+
const formStateSlice_1 = require("../store/formStateSlice");
|
|
14
|
+
const KeyValueEditor_1 = __importDefault(require("./KeyValueEditor"));
|
|
15
|
+
const EntityNotAvailable_1 = __importDefault(require("./EntityNotAvailable"));
|
|
16
|
+
const ResponseViewer_1 = __importDefault(require("./ResponseViewer"));
|
|
17
|
+
const OpalToolsView = ({ appInstalled, buildStatus }) => {
|
|
18
|
+
const location = (0, react_router_dom_1.useLocation)();
|
|
19
|
+
const dispatch = (0, hooks_1.useAppDispatch)();
|
|
20
|
+
const opalToolStates = (0, hooks_1.useAppSelector)(state => state.formState.opalTools) || {};
|
|
21
|
+
// State for functions and tools
|
|
22
|
+
const [opalFunctions, setOpalFunctions] = (0, react_1.useState)([]);
|
|
23
|
+
const [tools, setTools] = (0, react_1.useState)([]);
|
|
24
|
+
const [loadingTools, setLoadingTools] = (0, react_1.useState)(false);
|
|
25
|
+
const [discoveryError, setDiscoveryError] = (0, react_1.useState)(null);
|
|
26
|
+
// Ephemeral state (not persisted)
|
|
27
|
+
const [ephemeralStates, setEphemeralStates] = (0, react_1.useState)({});
|
|
28
|
+
// Collapsed state for function groups in sidebar
|
|
29
|
+
const [collapsedFunctions, setCollapsedFunctions] = (0, react_1.useState)({});
|
|
30
|
+
// Derive selected tool from URL path
|
|
31
|
+
const pathParts = location.pathname.split('/').filter(Boolean);
|
|
32
|
+
const selectedToolName = pathParts.length > 1 ? decodeURIComponent(pathParts[1]) : null;
|
|
33
|
+
const selectedTool = tools.find(t => t.name === selectedToolName);
|
|
34
|
+
// Entity navigation hook
|
|
35
|
+
const { navigateToEntity } = (0, useEntityNavigation_1.useEntityNavigation)({
|
|
36
|
+
basePath: '/opal-tools',
|
|
37
|
+
entityName: 'tool',
|
|
38
|
+
entities: tools.map(t => ({ id: t.name })),
|
|
39
|
+
selectedEntityId: selectedToolName,
|
|
40
|
+
});
|
|
41
|
+
// Group tools by functionId for sidebar display
|
|
42
|
+
const toolsByFunction = tools.reduce((acc, tool) => {
|
|
43
|
+
const funcId = tool.functionId || 'unknown';
|
|
44
|
+
if (!acc[funcId]) {
|
|
45
|
+
acc[funcId] = [];
|
|
46
|
+
}
|
|
47
|
+
acc[funcId].push(tool);
|
|
48
|
+
return acc;
|
|
49
|
+
}, {});
|
|
50
|
+
// Toggle function group collapsed state
|
|
51
|
+
const toggleFunctionCollapsed = (functionId) => {
|
|
52
|
+
setCollapsedFunctions(prev => ({
|
|
53
|
+
...prev,
|
|
54
|
+
[functionId]: !prev[functionId],
|
|
55
|
+
}));
|
|
56
|
+
};
|
|
57
|
+
// Helper functions for state management
|
|
58
|
+
const getOrCreateToolState = (toolName) => {
|
|
59
|
+
return opalToolStates[toolName] || (0, formStateSlice_1.getDefaultOpalToolFormState)();
|
|
60
|
+
};
|
|
61
|
+
const getOrCreateEphemeralState = (toolName) => {
|
|
62
|
+
return ephemeralStates[toolName] || {
|
|
63
|
+
response: null,
|
|
64
|
+
loading: false,
|
|
65
|
+
generatingMock: false,
|
|
66
|
+
};
|
|
67
|
+
};
|
|
68
|
+
const updateCurrentFormState = (updates) => {
|
|
69
|
+
if (!selectedToolName)
|
|
70
|
+
return;
|
|
71
|
+
dispatch((0, formStateSlice_1.updateOpalToolState)({ id: selectedToolName, data: updates }));
|
|
72
|
+
};
|
|
73
|
+
const updateCurrentEphemeralState = (updates) => {
|
|
74
|
+
if (!selectedToolName)
|
|
75
|
+
return;
|
|
76
|
+
setEphemeralStates(prev => ({
|
|
77
|
+
...prev,
|
|
78
|
+
[selectedToolName]: {
|
|
79
|
+
...getOrCreateEphemeralState(selectedToolName),
|
|
80
|
+
...updates,
|
|
81
|
+
},
|
|
82
|
+
}));
|
|
83
|
+
};
|
|
84
|
+
// URL-based tab state for request tabs
|
|
85
|
+
const { getParam, setParam } = (0, useQueryParams_1.useQueryParams)();
|
|
86
|
+
const urlTab = getParam('requestTab');
|
|
87
|
+
const activeTab = urlTab && ['params', 'headers', 'body', 'toolParams', 'toolDescription'].includes(urlTab) ? urlTab : 'body';
|
|
88
|
+
const setActiveTab = (0, react_1.useCallback)((tab) => {
|
|
89
|
+
setParam('requestTab', tab);
|
|
90
|
+
}, [setParam]);
|
|
91
|
+
// Get current state for rendering and hook usage
|
|
92
|
+
const currentFormState = selectedToolName ? getOrCreateToolState(selectedToolName) : (0, formStateSlice_1.getDefaultOpalToolFormState)();
|
|
93
|
+
const currentEphemeral = selectedToolName ? getOrCreateEphemeralState(selectedToolName) : { response: null, loading: false, generatingMock: false };
|
|
94
|
+
// Key-value pair helpers (via shared hook)
|
|
95
|
+
const { addKeyValuePair, updateKeyValuePair, removeKeyValuePair } = (0, useKeyValuePairs_1.useKeyValuePairs)({
|
|
96
|
+
params: currentFormState.params,
|
|
97
|
+
headers: currentFormState.headers,
|
|
98
|
+
onUpdate: updateCurrentFormState,
|
|
99
|
+
});
|
|
100
|
+
// Fetch opal functions on mount
|
|
101
|
+
(0, react_1.useEffect)(() => {
|
|
102
|
+
if (appInstalled) {
|
|
103
|
+
fetchOpalFunctions();
|
|
104
|
+
}
|
|
105
|
+
}, [appInstalled]);
|
|
106
|
+
// Fetch tools when functions are loaded
|
|
107
|
+
(0, react_1.useEffect)(() => {
|
|
108
|
+
if (opalFunctions.length > 0) {
|
|
109
|
+
fetchAllTools();
|
|
110
|
+
}
|
|
111
|
+
}, [opalFunctions]);
|
|
112
|
+
const fetchOpalFunctions = async () => {
|
|
113
|
+
try {
|
|
114
|
+
const response = await fetch('/devserver/api/opal-tools');
|
|
115
|
+
if (response.ok) {
|
|
116
|
+
const data = await response.json();
|
|
117
|
+
setOpalFunctions(data.functions || []);
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
catch (error) {
|
|
121
|
+
console.error('Error fetching opal functions:', error);
|
|
122
|
+
}
|
|
123
|
+
};
|
|
124
|
+
const fetchAllTools = async () => {
|
|
125
|
+
setLoadingTools(true);
|
|
126
|
+
setDiscoveryError(null);
|
|
127
|
+
const allTools = [];
|
|
128
|
+
try {
|
|
129
|
+
for (const func of opalFunctions) {
|
|
130
|
+
// Call discovery directly on the function URL (no auth required for /discovery)
|
|
131
|
+
const discoveryUrl = `${func.url}/discovery`;
|
|
132
|
+
const response = await fetch(discoveryUrl);
|
|
133
|
+
if (response.ok) {
|
|
134
|
+
const data = await response.json();
|
|
135
|
+
// Add function context to each tool
|
|
136
|
+
const toolsWithContext = (data.functions || []).map((tool) => ({
|
|
137
|
+
...tool,
|
|
138
|
+
functionId: func.id,
|
|
139
|
+
functionUrl: func.url,
|
|
140
|
+
}));
|
|
141
|
+
allTools.push(...toolsWithContext);
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
setTools(allTools);
|
|
145
|
+
}
|
|
146
|
+
catch (error) {
|
|
147
|
+
setDiscoveryError(error instanceof Error ? error.message : 'Failed to fetch tools');
|
|
148
|
+
}
|
|
149
|
+
finally {
|
|
150
|
+
setLoadingTools(false);
|
|
151
|
+
}
|
|
152
|
+
};
|
|
153
|
+
const generateMockData = async () => {
|
|
154
|
+
if (!selectedTool)
|
|
155
|
+
return;
|
|
156
|
+
updateCurrentEphemeralState({ generatingMock: true });
|
|
157
|
+
try {
|
|
158
|
+
const response = await fetch(`/devserver/api/opal-tools/${selectedTool.functionId}/tools/${selectedTool.name}/generate-mock`, {
|
|
159
|
+
method: 'POST',
|
|
160
|
+
headers: { 'Content-Type': 'application/json' },
|
|
161
|
+
body: JSON.stringify({ parameters: selectedTool.parameters }),
|
|
162
|
+
});
|
|
163
|
+
if (response.ok) {
|
|
164
|
+
const data = await response.json();
|
|
165
|
+
updateCurrentFormState({
|
|
166
|
+
requestBody: JSON.stringify({ parameters: data.data }, null, 2),
|
|
167
|
+
});
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
catch (error) {
|
|
171
|
+
console.error('Error generating mock data:', error);
|
|
172
|
+
}
|
|
173
|
+
finally {
|
|
174
|
+
updateCurrentEphemeralState({ generatingMock: false });
|
|
175
|
+
}
|
|
176
|
+
};
|
|
177
|
+
const executeToolRequest = async () => {
|
|
178
|
+
if (!selectedTool)
|
|
179
|
+
return;
|
|
180
|
+
const currentState = getOrCreateToolState(selectedToolName);
|
|
181
|
+
updateCurrentEphemeralState({ loading: true });
|
|
182
|
+
const startTime = performance.now();
|
|
183
|
+
try {
|
|
184
|
+
let payload = {};
|
|
185
|
+
if (currentState.requestBody.trim()) {
|
|
186
|
+
try {
|
|
187
|
+
payload = JSON.parse(currentState.requestBody);
|
|
188
|
+
}
|
|
189
|
+
catch (e) {
|
|
190
|
+
updateCurrentEphemeralState({
|
|
191
|
+
response: {
|
|
192
|
+
result: null,
|
|
193
|
+
executionTime: 0,
|
|
194
|
+
error: {
|
|
195
|
+
message: 'Invalid JSON in request body',
|
|
196
|
+
stack: String(e),
|
|
197
|
+
},
|
|
198
|
+
},
|
|
199
|
+
loading: false,
|
|
200
|
+
});
|
|
201
|
+
return;
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
const toolUrl = `${selectedTool.functionUrl}${selectedTool.endpoint}`;
|
|
205
|
+
const response = await fetch(toolUrl, {
|
|
206
|
+
method: selectedTool.http_method || 'POST',
|
|
207
|
+
headers: { 'Content-Type': 'application/json' },
|
|
208
|
+
body: JSON.stringify(payload),
|
|
209
|
+
});
|
|
210
|
+
const executionTime = Math.round(performance.now() - startTime);
|
|
211
|
+
const responseHeaders = [];
|
|
212
|
+
response.headers.forEach((value, key) => {
|
|
213
|
+
responseHeaders.push([key, value]);
|
|
214
|
+
});
|
|
215
|
+
const responseText = await response.text();
|
|
216
|
+
let responseData;
|
|
217
|
+
try {
|
|
218
|
+
responseData = JSON.parse(responseText);
|
|
219
|
+
}
|
|
220
|
+
catch {
|
|
221
|
+
responseData = responseText;
|
|
222
|
+
}
|
|
223
|
+
updateCurrentEphemeralState({
|
|
224
|
+
response: {
|
|
225
|
+
result: responseData,
|
|
226
|
+
executionTime,
|
|
227
|
+
status: response.status,
|
|
228
|
+
statusText: response.statusText,
|
|
229
|
+
headers: responseHeaders,
|
|
230
|
+
},
|
|
231
|
+
loading: false,
|
|
232
|
+
});
|
|
233
|
+
}
|
|
234
|
+
catch (error) {
|
|
235
|
+
const executionTime = Math.round(performance.now() - startTime);
|
|
236
|
+
updateCurrentEphemeralState({
|
|
237
|
+
response: {
|
|
238
|
+
result: null,
|
|
239
|
+
executionTime,
|
|
240
|
+
error: {
|
|
241
|
+
message: error instanceof Error ? error.message : 'Unknown error',
|
|
242
|
+
stack: error instanceof Error ? error.stack : undefined,
|
|
243
|
+
},
|
|
244
|
+
},
|
|
245
|
+
loading: false,
|
|
246
|
+
});
|
|
247
|
+
}
|
|
248
|
+
};
|
|
249
|
+
// Check if entity is not available (building, failed, or not installed)
|
|
250
|
+
const isNotAvailable = buildStatus?.buildInProgress ||
|
|
251
|
+
(buildStatus?.lastBuildSuccess === null && buildStatus?.lastBuildTimestamp === null) ||
|
|
252
|
+
buildStatus?.lastBuildSuccess === false ||
|
|
253
|
+
!appInstalled;
|
|
254
|
+
if (isNotAvailable) {
|
|
255
|
+
return ((0, jsx_runtime_1.jsx)(EntityNotAvailable_1.default, { buildStatus: buildStatus, appInstalled: appInstalled, entityName: "Opal Tools" }));
|
|
256
|
+
}
|
|
257
|
+
return ((0, jsx_runtime_1.jsxs)("div", { className: "functions-view", children: [(0, jsx_runtime_1.jsxs)("div", { className: "content-header", children: [(0, jsx_runtime_1.jsx)("h2", { children: "Opal Tools" }), (0, jsx_runtime_1.jsxs)("div", { className: "functions-url-bar", children: [(0, jsx_runtime_1.jsx)("span", { className: "http-method-select http-method-display", children: selectedTool?.http_method || 'POST' }), (0, jsx_runtime_1.jsx)("input", { type: "text", className: "url-input", value: selectedTool ? `${selectedTool.functionUrl}${selectedTool.endpoint}` : '', placeholder: "Select a tool to see URL", readOnly: true }), (0, jsx_runtime_1.jsx)("button", { className: "send-button generate-mock-btn", onClick: generateMockData, disabled: !selectedTool || currentEphemeral.generatingMock, children: currentEphemeral.generatingMock ? 'Generating...' : 'Generate Mock' }), (0, jsx_runtime_1.jsx)("button", { className: "send-button", onClick: executeToolRequest, disabled: !selectedTool || currentEphemeral.loading || buildStatus?.buildInProgress, children: currentEphemeral.loading ? 'Sending...' : 'Send' })] })] }), (0, jsx_runtime_1.jsxs)("div", { className: "functions-layout", children: [(0, jsx_runtime_1.jsx)("div", { className: "functions-sidebar", children: (0, jsx_runtime_1.jsx)("div", { className: "functions-list", children: loadingTools ? ((0, jsx_runtime_1.jsx)("div", { className: "no-functions", children: (0, jsx_runtime_1.jsx)("p", { children: "Loading tools..." }) })) : discoveryError ? ((0, jsx_runtime_1.jsx)("div", { className: "no-functions", children: (0, jsx_runtime_1.jsxs)("p", { children: ["Error: ", discoveryError] }) })) : tools.length === 0 ? ((0, jsx_runtime_1.jsx)("div", { className: "no-functions", children: (0, jsx_runtime_1.jsx)("p", { children: "No Opal tools found" }) })) : (Object.entries(toolsByFunction).map(([functionId, functionTools]) => ((0, jsx_runtime_1.jsxs)("div", { className: "tool-function-group", children: [(0, jsx_runtime_1.jsxs)("div", { className: "tool-function-header", onClick: () => toggleFunctionCollapsed(functionId), children: [(0, jsx_runtime_1.jsx)("span", { className: `collapse-icon ${collapsedFunctions[functionId] ? 'collapsed' : ''}`, children: "\u25BC" }), (0, jsx_runtime_1.jsx)("span", { className: "function-group-name", children: functionId }), (0, jsx_runtime_1.jsxs)("span", { className: "tool-count", children: ["(", functionTools.length, ")"] })] }), !collapsedFunctions[functionId] && ((0, jsx_runtime_1.jsx)("div", { children: functionTools.map((tool) => ((0, jsx_runtime_1.jsxs)("div", { className: `function-item tool-item-nested ${selectedToolName === tool.name ? 'active' : ''}`, onClick: () => navigateToEntity(tool.name), children: [(0, jsx_runtime_1.jsx)("div", { className: "function-name", children: tool.name }), (0, jsx_runtime_1.jsx)("div", { className: "function-description", children: tool.description.length > 60
|
|
258
|
+
? tool.description.substring(0, 60) + '...'
|
|
259
|
+
: tool.description })] }, tool.name))) }))] }, functionId)))) }) }), (0, jsx_runtime_1.jsx)("div", { className: "functions-content", children: selectedTool ? ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)("div", { className: "request-section", children: (0, jsx_runtime_1.jsxs)("div", { className: "request-tabs", children: [(0, jsx_runtime_1.jsxs)("div", { className: "tab-headers", children: [(0, jsx_runtime_1.jsx)("button", { className: `tab-header ${activeTab === 'params' ? 'active' : ''}`, onClick: () => setActiveTab('params'), children: "Params" }), (0, jsx_runtime_1.jsx)("button", { className: `tab-header ${activeTab === 'headers' ? 'active' : ''}`, onClick: () => setActiveTab('headers'), children: "Headers" }), (0, jsx_runtime_1.jsx)("button", { className: `tab-header ${activeTab === 'body' ? 'active' : ''}`, onClick: () => setActiveTab('body'), children: "Body" }), (0, jsx_runtime_1.jsx)("div", { className: "tab-spacer" }), (0, jsx_runtime_1.jsx)("button", { className: `tab-header ${activeTab === 'toolDescription' ? 'active' : ''}`, onClick: () => setActiveTab('toolDescription'), children: "Tool Description" }), (0, jsx_runtime_1.jsxs)("button", { className: `tab-header ${activeTab === 'toolParams' ? 'active' : ''}`, onClick: () => setActiveTab('toolParams'), children: ["Tool Parameters (", selectedTool.parameters.length, ")"] })] }), (0, jsx_runtime_1.jsxs)("div", { className: "tab-content", children: [activeTab === 'params' && ((0, jsx_runtime_1.jsx)(KeyValueEditor_1.default, { items: currentFormState.params, onAdd: () => addKeyValuePair('params'), onUpdate: (index, field, value) => updateKeyValuePair('params', index, field, value), onRemove: (index) => removeKeyValuePair('params', index), addButtonLabel: "Add Parameter" })), activeTab === 'headers' && ((0, jsx_runtime_1.jsx)(KeyValueEditor_1.default, { items: currentFormState.headers, onAdd: () => addKeyValuePair('headers'), onUpdate: (index, field, value) => updateKeyValuePair('headers', index, field, value), onRemove: (index) => removeKeyValuePair('headers', index), addButtonLabel: "Add Header" })), activeTab === 'body' && ((0, jsx_runtime_1.jsx)("div", { className: "body-editor", children: (0, jsx_runtime_1.jsx)("textarea", { className: "body-textarea", value: currentFormState.requestBody, onChange: (e) => updateCurrentFormState({ requestBody: e.target.value }), placeholder: "Enter JSON request body..." }) })), activeTab === 'toolDescription' && ((0, jsx_runtime_1.jsxs)("div", { className: "tool-description-content", children: [(0, jsx_runtime_1.jsx)("h4", { children: selectedTool.name }), (0, jsx_runtime_1.jsx)("p", { children: selectedTool.description || 'No description available.' })] })), activeTab === 'toolParams' && ((0, jsx_runtime_1.jsx)("div", { className: "schema-viewer", children: (0, jsx_runtime_1.jsx)("div", { className: "schema-fields", children: selectedTool.parameters.length > 0 ? ((0, jsx_runtime_1.jsxs)("table", { className: "fields-table", children: [(0, jsx_runtime_1.jsx)("thead", { children: (0, jsx_runtime_1.jsxs)("tr", { children: [(0, jsx_runtime_1.jsx)("th", { children: "Name" }), (0, jsx_runtime_1.jsx)("th", { children: "Type" }), (0, jsx_runtime_1.jsx)("th", { children: "Required" }), (0, jsx_runtime_1.jsx)("th", { children: "Description" })] }) }), (0, jsx_runtime_1.jsx)("tbody", { children: selectedTool.parameters.map((param) => ((0, jsx_runtime_1.jsxs)("tr", { children: [(0, jsx_runtime_1.jsx)("td", { className: "field-name", children: param.name }), (0, jsx_runtime_1.jsx)("td", { className: "field-type", children: (0, jsx_runtime_1.jsx)("span", { className: `type-badge type-${param.type.replace(/[^a-z]/gi, '')}`, children: param.type }) }), (0, jsx_runtime_1.jsxs)("td", { children: [param.required && (0, jsx_runtime_1.jsx)("span", { className: "primary-badge", children: "YES" }), !param.required && (0, jsx_runtime_1.jsx)("span", { className: "text-secondary", children: "No" })] }), (0, jsx_runtime_1.jsx)("td", { className: "field-description", children: param.description })] }, param.name))) })] })) : ((0, jsx_runtime_1.jsx)("p", { className: "empty-params-message", children: "This tool has no parameters." })) }) }))] })] }) }), (0, jsx_runtime_1.jsxs)("div", { className: "response-section", children: [(0, jsx_runtime_1.jsxs)("div", { className: "response-header", children: [(0, jsx_runtime_1.jsx)("h4", { children: "Response" }), currentEphemeral.response && ((0, jsx_runtime_1.jsxs)("div", { className: "response-meta", children: [(0, jsx_runtime_1.jsxs)("span", { className: "execution-time", children: [currentEphemeral.response.executionTime, "ms"] }), currentEphemeral.response.status && ((0, jsx_runtime_1.jsxs)("span", { className: `http-status status-${Math.floor(currentEphemeral.response.status / 100)}xx`, children: [currentEphemeral.response.status, " ", currentEphemeral.response.statusText] }))] }))] }), (0, jsx_runtime_1.jsx)(ResponseViewer_1.default, { response: currentEphemeral.response })] })] })) : ((0, jsx_runtime_1.jsx)("div", { className: "no-function-selected", children: (0, jsx_runtime_1.jsxs)("div", { className: "placeholder-content", children: [(0, jsx_runtime_1.jsx)("h3", { children: "Select an Opal Tool" }), (0, jsx_runtime_1.jsx)("p", { children: "Choose a tool from the sidebar to test it" })] }) })) })] })] }));
|
|
260
|
+
};
|
|
261
|
+
exports.default = OpalToolsView;
|
|
262
|
+
//# sourceMappingURL=OpalToolsView.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OpalToolsView.js","sourceRoot":"","sources":["../../../../src/ui/components/OpalToolsView.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { ExecutionResponse } from '../types/common';
|
|
3
|
+
interface ResponseViewerProps {
|
|
4
|
+
/** The response object to display */
|
|
5
|
+
response: ExecutionResponse | null;
|
|
6
|
+
/** Optional logs to display (used by FunctionsView) */
|
|
7
|
+
logs?: string[];
|
|
8
|
+
/** Whether to show response tabs (body/headers). Default: false */
|
|
9
|
+
showTabs?: boolean;
|
|
10
|
+
/** Active tab when showTabs is true */
|
|
11
|
+
activeTab?: 'body' | 'headers';
|
|
12
|
+
/** Callback when tab changes */
|
|
13
|
+
onTabChange?: (tab: 'body' | 'headers') => void;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Reusable response viewer component.
|
|
17
|
+
* Displays HTTP response data including status, body, headers, and errors.
|
|
18
|
+
*
|
|
19
|
+
* Supports two modes:
|
|
20
|
+
* - Simple mode (default): Shows response body directly
|
|
21
|
+
* - Tabbed mode: Shows body/headers tabs when showTabs=true
|
|
22
|
+
*
|
|
23
|
+
* @example
|
|
24
|
+
* ```typescript
|
|
25
|
+
* // Simple mode (OpalToolsView)
|
|
26
|
+
* <ResponseViewer response={response} />
|
|
27
|
+
*
|
|
28
|
+
* // Tabbed mode (FunctionsView)
|
|
29
|
+
* <ResponseViewer
|
|
30
|
+
* response={response}
|
|
31
|
+
* logs={response.logs}
|
|
32
|
+
* showTabs
|
|
33
|
+
* activeTab={responseTab}
|
|
34
|
+
* onTabChange={setResponseTab}
|
|
35
|
+
* />
|
|
36
|
+
* ```
|
|
37
|
+
*/
|
|
38
|
+
declare const ResponseViewer: React.FC<ResponseViewerProps>;
|
|
39
|
+
export default ResponseViewer;
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
4
|
+
/**
|
|
5
|
+
* Reusable response viewer component.
|
|
6
|
+
* Displays HTTP response data including status, body, headers, and errors.
|
|
7
|
+
*
|
|
8
|
+
* Supports two modes:
|
|
9
|
+
* - Simple mode (default): Shows response body directly
|
|
10
|
+
* - Tabbed mode: Shows body/headers tabs when showTabs=true
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* ```typescript
|
|
14
|
+
* // Simple mode (OpalToolsView)
|
|
15
|
+
* <ResponseViewer response={response} />
|
|
16
|
+
*
|
|
17
|
+
* // Tabbed mode (FunctionsView)
|
|
18
|
+
* <ResponseViewer
|
|
19
|
+
* response={response}
|
|
20
|
+
* logs={response.logs}
|
|
21
|
+
* showTabs
|
|
22
|
+
* activeTab={responseTab}
|
|
23
|
+
* onTabChange={setResponseTab}
|
|
24
|
+
* />
|
|
25
|
+
* ```
|
|
26
|
+
*/
|
|
27
|
+
const ResponseViewer = ({ response, logs, showTabs = false, activeTab = 'body', onTabChange, }) => {
|
|
28
|
+
if (!response) {
|
|
29
|
+
return ((0, jsx_runtime_1.jsx)("div", { className: "response-content", children: (0, jsx_runtime_1.jsx)("div", { className: "no-response", children: (0, jsx_runtime_1.jsx)("p", { children: "Send a request to see the response" }) }) }));
|
|
30
|
+
}
|
|
31
|
+
const renderBody = () => ((0, jsx_runtime_1.jsxs)("div", { className: "response-data", children: [response.error ? ((0, jsx_runtime_1.jsxs)("div", { className: "response-error", children: [(0, jsx_runtime_1.jsx)("h5", { children: "Error" }), (0, jsx_runtime_1.jsx)("pre", { children: response.error.message }), response.error.stack && ((0, jsx_runtime_1.jsxs)("details", { children: [(0, jsx_runtime_1.jsx)("summary", { children: "Stack trace" }), (0, jsx_runtime_1.jsx)("pre", { children: response.error.stack })] }))] })) : ((0, jsx_runtime_1.jsx)("div", { className: "response-body", children: (0, jsx_runtime_1.jsx)("pre", { children: typeof response.result === 'string'
|
|
32
|
+
? response.result
|
|
33
|
+
: JSON.stringify(response.result, null, 2) }) })), logs && logs.length > 0 && ((0, jsx_runtime_1.jsxs)("div", { className: "response-logs", children: [(0, jsx_runtime_1.jsx)("h5", { children: "Execution Logs" }), (0, jsx_runtime_1.jsx)("div", { className: "log-entries", children: logs.map((log, index) => ((0, jsx_runtime_1.jsx)("div", { className: "log-entry", children: log }, index))) })] }))] }));
|
|
34
|
+
const renderHeaders = () => ((0, jsx_runtime_1.jsx)("div", { className: "response-headers", children: response.headers && response.headers.length > 0 ? ((0, jsx_runtime_1.jsxs)("div", { className: "key-value-editor", children: [(0, jsx_runtime_1.jsxs)("div", { className: "key-value-header", children: [(0, jsx_runtime_1.jsx)("span", { className: "col-key", children: "Key" }), (0, jsx_runtime_1.jsx)("span", { className: "col-value", children: "Value" })] }), response.headers.map(([key, value], index) => ((0, jsx_runtime_1.jsxs)("div", { className: "key-value-row", children: [(0, jsx_runtime_1.jsx)("input", { type: "text", value: key, readOnly: true, className: "header-key" }), (0, jsx_runtime_1.jsx)("input", { type: "text", value: value, readOnly: true, className: "header-value" })] }, index)))] })) : ((0, jsx_runtime_1.jsx)("div", { className: "no-headers", children: (0, jsx_runtime_1.jsx)("p", { children: "No response headers" }) })) }));
|
|
35
|
+
// Simple mode: just show body
|
|
36
|
+
if (!showTabs) {
|
|
37
|
+
return (0, jsx_runtime_1.jsx)("div", { className: "response-content", children: renderBody() });
|
|
38
|
+
}
|
|
39
|
+
// Tabbed mode: show body/headers tabs
|
|
40
|
+
return ((0, jsx_runtime_1.jsxs)("div", { className: "response-tabs", children: [(0, jsx_runtime_1.jsxs)("div", { className: "tab-headers", children: [(0, jsx_runtime_1.jsx)("button", { className: `tab-header ${activeTab === 'body' ? 'active' : ''}`, onClick: () => onTabChange?.('body'), children: "Body" }), (0, jsx_runtime_1.jsx)("button", { className: `tab-header ${activeTab === 'headers' ? 'active' : ''}`, onClick: () => onTabChange?.('headers'), children: "Headers" })] }), (0, jsx_runtime_1.jsxs)("div", { className: "tab-content", children: [activeTab === 'body' && renderBody(), activeTab === 'headers' && renderHeaders()] })] }));
|
|
41
|
+
};
|
|
42
|
+
exports.default = ResponseViewer;
|
|
43
|
+
//# sourceMappingURL=ResponseViewer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ResponseViewer.js","sourceRoot":"","sources":["../../../../src/ui/components/ResponseViewer.tsx"],"names":[],"mappings":"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"}
|
|
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
6
|
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
7
7
|
const react_1 = require("react");
|
|
8
8
|
const EyeIcon_1 = __importDefault(require("./common/EyeIcon"));
|
|
9
|
+
const axiom_icons_1 = require("@optimizely/axiom-icons");
|
|
9
10
|
const SecretsStoreViewer = ({ secrets, onUpdate }) => {
|
|
10
11
|
const [expandedSections, setExpandedSections] = (0, react_1.useState)(new Set());
|
|
11
12
|
const [visibleSecrets, setVisibleSecrets] = (0, react_1.useState)(new Set());
|
|
@@ -162,7 +163,7 @@ const SecretsStoreViewer = ({ secrets, onUpdate }) => {
|
|
|
162
163
|
};
|
|
163
164
|
const sectionNames = Object.keys(secrets).sort();
|
|
164
165
|
if (sectionNames.length === 0) {
|
|
165
|
-
return ((0, jsx_runtime_1.jsx)("div", { className: "secrets-store-viewer empty", children: (0, jsx_runtime_1.jsxs)("div", { className: "empty-message", children: [(0, jsx_runtime_1.jsx)(
|
|
166
|
+
return ((0, jsx_runtime_1.jsx)("div", { className: "secrets-store-viewer empty", children: (0, jsx_runtime_1.jsxs)("div", { className: "empty-message", children: [(0, jsx_runtime_1.jsx)(axiom_icons_1.IconKey, { size: "xl" }), (0, jsx_runtime_1.jsx)("p", { children: "No secrets stored" }), (0, jsx_runtime_1.jsx)("button", { className: "add-section-btn", onClick: () => addNewSecret('default'), children: "Add First Secret" })] }) }));
|
|
166
167
|
}
|
|
167
168
|
return ((0, jsx_runtime_1.jsx)("div", { className: "secrets-store-viewer compact-store", children: (0, jsx_runtime_1.jsxs)("div", { className: "store-sections", children: [sectionNames.map((sectionName) => {
|
|
168
169
|
const section = secrets[sectionName];
|
|
@@ -171,7 +172,7 @@ const SecretsStoreViewer = ({ secrets, onUpdate }) => {
|
|
|
171
172
|
return ((0, jsx_runtime_1.jsxs)("div", { className: "store-section", children: [(0, jsx_runtime_1.jsxs)("div", { className: "section-header", onClick: () => toggleSection(sectionName), children: [(0, jsx_runtime_1.jsx)("span", { className: "expand-icon", children: isExpanded ? '▼' : '▶' }), (0, jsx_runtime_1.jsx)("span", { className: "section-name", children: sectionName }), (0, jsx_runtime_1.jsxs)("span", { className: "field-count", children: ["(", fieldNames.length, ")"] })] }), isExpanded && ((0, jsx_runtime_1.jsx)("div", { className: "section-fields", children: fieldNames.map((fieldName) => {
|
|
172
173
|
const value = section[fieldName];
|
|
173
174
|
const secretId = `${sectionName}.${fieldName}`;
|
|
174
|
-
return ((0, jsx_runtime_1.jsxs)("div", { className: "field-row", children: [(0, jsx_runtime_1.jsx)("div", { className: "field-key", children: fieldName }), (0, jsx_runtime_1.jsx)("div", { className: "field-value", children: renderSecretValue(value, secretId) }), (0, jsx_runtime_1.jsxs)("div", { className: "field-metadata", children: [(0, jsx_runtime_1.jsx)(EyeIcon_1.default, { isVisible: visibleSecrets.has(secretId), onClick: () => toggleSecretVisibility(secretId), className: "metadata-icon" }), (0, jsx_runtime_1.jsx)("button", { className: "edit-icon", onClick: () => startEditing(sectionName, fieldName, value), title: "Edit", children: "
|
|
175
|
+
return ((0, jsx_runtime_1.jsxs)("div", { className: "field-row", children: [(0, jsx_runtime_1.jsx)("div", { className: "field-key", children: fieldName }), (0, jsx_runtime_1.jsx)("div", { className: "field-value", children: renderSecretValue(value, secretId) }), (0, jsx_runtime_1.jsxs)("div", { className: "field-metadata", children: [(0, jsx_runtime_1.jsx)(EyeIcon_1.default, { isVisible: visibleSecrets.has(secretId), onClick: () => toggleSecretVisibility(secretId), className: "metadata-icon" }), (0, jsx_runtime_1.jsx)("button", { className: "edit-icon", onClick: () => startEditing(sectionName, fieldName, value), title: "Edit", children: (0, jsx_runtime_1.jsx)(axiom_icons_1.IconPen, { size: "2xs" }) }), (0, jsx_runtime_1.jsx)("button", { className: "delete-icon", onClick: () => deleteSecret(sectionName, fieldName), title: "Delete", children: "\uD83D\uDDD1\uFE0F" })] })] }, fieldName));
|
|
175
176
|
}) }))] }, sectionName));
|
|
176
177
|
}), sectionNames.length === 0 && ((0, jsx_runtime_1.jsx)("div", { className: "empty-store", children: "No secrets configured" }))] }) }));
|
|
177
178
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SecretsStoreViewer.js","sourceRoot":"","sources":["../../../../src/ui/components/SecretsStoreViewer.tsx"],"names":[],"mappings":";;;;;;AAAA,iCAAwC;AACxC,+DAAuC;
|
|
1
|
+
{"version":3,"file":"SecretsStoreViewer.js","sourceRoot":"","sources":["../../../../src/ui/components/SecretsStoreViewer.tsx"],"names":[],"mappings":";;;;;;AAAA,iCAAwC;AACxC,+DAAuC;AACvC,yDAA2D;AAW3D,MAAM,kBAAkB,GAAsC,CAAC,EAC7D,OAAO,EACP,QAAQ,EACT,EAAE,EAAE;IACH,MAAM,CAAC,gBAAgB,EAAE,mBAAmB,CAAC,GAAG,IAAA,gBAAQ,EAAc,IAAI,GAAG,EAAE,CAAC,CAAC;IACjF,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,GAAG,IAAA,gBAAQ,EAAc,IAAI,GAAG,EAAE,CAAC,CAAC;IAC7E,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,IAAA,gBAAQ,EAAgB,IAAI,CAAC,CAAC;IACxE,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,IAAA,gBAAQ,EAAC,EAAE,CAAC,CAAC;IAE/C,MAAM,aAAa,GAAG,CAAC,WAAmB,EAAE,EAAE;QAC5C,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,gBAAgB,CAAC,CAAC;QAC9C,IAAI,WAAW,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC;YACjC,WAAW,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QAClC,CAAC;aAAM,CAAC;YACN,WAAW,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QAC/B,CAAC;QACD,mBAAmB,CAAC,WAAW,CAAC,CAAC;IACnC,CAAC,CAAC;IAEF,MAAM,sBAAsB,GAAG,CAAC,QAAgB,EAAE,EAAE;QAClD,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,cAAc,CAAC,CAAC;QAC3C,IAAI,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC7B,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC9B,CAAC;aAAM,CAAC;YACN,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC3B,CAAC;QACD,iBAAiB,CAAC,UAAU,CAAC,CAAC;IAChC,CAAC,CAAC;IAEF,MAAM,YAAY,GAAG,CAAC,WAAmB,EAAE,SAAiB,EAAE,YAAiB,EAAE,EAAE;QACjF,MAAM,QAAQ,GAAG,GAAG,WAAW,IAAI,SAAS,EAAE,CAAC;QAC/C,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QAC3B,YAAY,CAAC,OAAO,YAAY,KAAK,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC;IAC/F,CAAC,CAAC;IAEF,MAAM,QAAQ,GAAG,KAAK,EAAE,WAAmB,EAAE,SAAiB,EAAE,EAAE;QAChE,IAAI,CAAC;YACH,iDAAiD;YACjD,IAAI,QAAa,CAAC;YAClB,IAAI,CAAC;gBACH,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;YACnC,CAAC;YAAC,MAAM,CAAC;gBACP,QAAQ,GAAG,SAAS,CAAC;YACvB,CAAC;YAED,iBAAiB;YACjB,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,iCAAiC,WAAW,EAAE,EAAE;gBAC3E,MAAM,EAAE,KAAK;gBACb,OAAO,EAAE;oBACP,cAAc,EAAE,kBAAkB;iBACnC;gBACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAC;aAChD,CAAC,CAAC;YAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACjB,MAAM,IAAI,KAAK,CAAC,4BAA4B,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;YACrE,CAAC;YAED,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YAErC,qBAAqB;YACrB,MAAM,cAAc,GAAG,EAAE,GAAG,OAAO,EAAE,CAAC;YACtC,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,EAAE,CAAC;gBACjC,cAAc,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC;YACnC,CAAC;YACD,cAAc,CAAC,WAAW,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC;YAC7C,QAAQ,CAAC,cAAc,CAAC,CAAC;YAEzB,gBAAgB,CAAC,IAAI,CAAC,CAAC;YACvB,YAAY,CAAC,EAAE,CAAC,CAAC;QACnB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,wBAAwB,EAAE,KAAK,CAAC,CAAC;YAC/C,KAAK,CAAC,4BAA4B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC9F,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,YAAY,GAAG,KAAK,EAAE,WAAmB,EAAE,SAAiB,EAAE,EAAE;QACpE,IAAI,CAAC,OAAO,CAAC,+CAA+C,SAAS,mBAAmB,WAAW,IAAI,CAAC,EAAE,CAAC;YACzG,OAAO;QACT,CAAC;QAED,IAAI,CAAC;YACH,2CAA2C;YAC3C,MAAM,cAAc,GAAG,EAAE,GAAG,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;YACnD,OAAO,cAAc,CAAC,SAAS,CAAC,CAAC;YAEjC,iBAAiB;YACjB,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,iCAAiC,WAAW,EAAE,EAAE;gBAC3E,MAAM,EAAE,KAAK;gBACb,OAAO,EAAE;oBACP,cAAc,EAAE,kBAAkB;iBACnC;gBACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC;aACrC,CAAC,CAAC;YAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACjB,MAAM,IAAI,KAAK,CAAC,4BAA4B,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;YACrE,CAAC;YAED,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YAErC,qBAAqB;YACrB,MAAM,cAAc,GAAG,EAAE,GAAG,OAAO,EAAE,CAAC;YACtC,cAAc,CAAC,WAAW,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC;YAC7C,QAAQ,CAAC,cAAc,CAAC,CAAC;QAC3B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,wBAAwB,EAAE,KAAK,CAAC,CAAC;YAC/C,KAAK,CAAC,4BAA4B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC9F,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,YAAY,GAAG,KAAK,EAAE,WAAmB,EAAE,EAAE;QACjD,MAAM,SAAS,GAAG,MAAM,CAAC,oBAAoB,CAAC,CAAC;QAC/C,IAAI,CAAC,SAAS;YAAE,OAAO;QAEvB,MAAM,KAAK,GAAG,MAAM,CAAC,qBAAqB,CAAC,CAAC;QAC5C,IAAI,KAAK,KAAK,IAAI;YAAE,OAAO,CAAC,iBAAiB;QAE7C,IAAI,CAAC;YACH,iBAAiB;YACjB,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,iCAAiC,WAAW,EAAE,EAAE;gBAC3E,MAAM,EAAE,KAAK;gBACb,OAAO,EAAE;oBACP,cAAc,EAAE,kBAAkB;iBACnC;gBACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,CAAC;aAC7C,CAAC,CAAC;YAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACjB,MAAM,IAAI,KAAK,CAAC,yBAAyB,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;YAClE,CAAC;YAED,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YAErC,qBAAqB;YACrB,MAAM,cAAc,GAAG,EAAE,GAAG,OAAO,EAAE,CAAC;YACtC,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,EAAE,CAAC;gBACjC,cAAc,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC;YACnC,CAAC;YACD,cAAc,CAAC,WAAW,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC;YAC7C,QAAQ,CAAC,cAAc,CAAC,CAAC;QAC3B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,sBAAsB,EAAE,KAAK,CAAC,CAAC;YAC7C,KAAK,CAAC,yBAAyB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC3F,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,UAAU,GAAG,GAAG,EAAE;QACtB,gBAAgB,CAAC,IAAI,CAAC,CAAC;QACvB,YAAY,CAAC,EAAE,CAAC,CAAC;IACnB,CAAC,CAAC;IAEF,MAAM,iBAAiB,GAAG,CAAC,KAAU,EAAE,QAAgB,EAAE,EAAE;QACzD,MAAM,SAAS,GAAG,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC/C,MAAM,SAAS,GAAG,aAAa,KAAK,QAAQ,CAAC;QAE7C,IAAI,SAAS,EAAE,CAAC;YACd,OAAO,CACL,iCAAK,SAAS,EAAC,kBAAkB,aAC/B,qCACE,SAAS,EAAC,mBAAmB,EAC7B,KAAK,EAAE,SAAS,EAChB,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAC7C,IAAI,EAAE,CAAC,EACP,WAAW,EAAC,uBAAuB,GACnC,EACF,iCAAK,SAAS,EAAC,sBAAsB,aACnC,mCACE,SAAS,EAAC,UAAU,EACpB,OAAO,EAAE,GAAG,EAAE;oCACZ,MAAM,CAAC,WAAW,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;oCACrD,QAAQ,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;gCACnC,CAAC,qBAGM,EACT,mCAAQ,SAAS,EAAC,YAAY,EAAC,OAAO,EAAE,UAAU,uBAEzC,IACL,IACF,CACP,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,OAAO,iCAAM,SAAS,EAAC,qBAAqB,YAAE,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,GAAQ,CAAC;QACvE,CAAC;QAED,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YAC1C,OAAO,iCAAM,SAAS,EAAC,oBAAoB,wBAAe,CAAC;QAC7D,CAAC;QAED,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,OAAO,kCAAM,SAAS,EAAC,qBAAqB,mBAAG,KAAK,UAAS,CAAC;QAChE,CAAC;QAED,OAAO,iCAAM,SAAS,EAAC,sBAAsB,YAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAQ,CAAC;IAC/E,CAAC,CAAC;IAEF,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;IAEjD,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9B,OAAO,CACL,gCAAK,SAAS,EAAC,4BAA4B,YACzC,iCAAK,SAAS,EAAC,eAAe,aAC5B,uBAAC,qBAAO,IAAC,IAAI,EAAC,IAAI,GAAW,EAC7B,8DAAwB,EACxB,mCACE,SAAS,EAAC,iBAAiB,EAC3B,OAAO,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC,iCAG/B,IACL,GACF,CACP,CAAC;IACJ,CAAC;IAED,OAAO,CACL,gCAAK,SAAS,EAAC,oCAAoC,YACjD,iCAAK,SAAS,EAAC,gBAAgB,aAC5B,YAAY,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE;oBAChC,MAAM,OAAO,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;oBACrC,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;oBAC/C,MAAM,UAAU,GAAG,gBAAgB,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;oBAErD,OAAO,CACL,iCAAuB,SAAS,EAAC,eAAe,aAC9C,iCACE,SAAS,EAAC,gBAAgB,EAC1B,OAAO,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,WAAW,CAAC,aAEzC,iCAAM,SAAS,EAAC,aAAa,YAC1B,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAClB,EACP,iCAAM,SAAS,EAAC,cAAc,YAAE,WAAW,GAAQ,EACnD,kCAAM,SAAS,EAAC,aAAa,kBAAG,UAAU,CAAC,MAAM,SAAS,IACtD,EAEL,UAAU,IAAI,CACb,gCAAK,SAAS,EAAC,gBAAgB,YAC5B,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE;oCAC5B,MAAM,KAAK,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;oCACjC,MAAM,QAAQ,GAAG,GAAG,WAAW,IAAI,SAAS,EAAE,CAAC;oCAE/C,OAAO,CACL,iCAAqB,SAAS,EAAC,WAAW,aACxC,gCAAK,SAAS,EAAC,WAAW,YAAE,SAAS,GAAO,EAC5C,gCAAK,SAAS,EAAC,aAAa,YACzB,iBAAiB,CAAC,KAAK,EAAE,QAAQ,CAAC,GAC/B,EACN,iCAAK,SAAS,EAAC,gBAAgB,aAC7B,uBAAC,iBAAO,IACN,SAAS,EAAE,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,EACvC,OAAO,EAAE,GAAG,EAAE,CAAC,sBAAsB,CAAC,QAAQ,CAAC,EAC/C,SAAS,EAAC,eAAe,GACzB,EAEF,mCACE,SAAS,EAAC,WAAW,EACrB,OAAO,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,WAAW,EAAE,SAAS,EAAE,KAAK,CAAC,EAC1D,KAAK,EAAC,MAAM,YAEZ,uBAAC,qBAAO,IAAC,IAAI,EAAC,KAAK,GAAW,GACvB,EAET,mCACE,SAAS,EAAC,aAAa,EACvB,OAAO,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,WAAW,EAAE,SAAS,CAAC,EACnD,KAAK,EAAC,QAAQ,mCAGP,IACL,KA3BE,SAAS,CA4Bb,CACP,CAAC;gCACJ,CAAC,CAAC,GACE,CACP,KAnDO,WAAW,CAoDf,CACP,CAAC;gBACJ,CAAC,CAAC,EAED,YAAY,CAAC,MAAM,KAAK,CAAC,IAAI,CAC5B,gCAAK,SAAS,EAAC,aAAa,sCAA4B,CACzD,IACG,GACF,CACP,CAAC;AACJ,CAAC,CAAC;AAEF,kBAAe,kBAAkB,CAAC"}
|
|
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
6
|
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
7
7
|
const react_1 = require("react");
|
|
8
8
|
const EyeIcon_1 = __importDefault(require("./common/EyeIcon"));
|
|
9
|
+
const axiom_icons_1 = require("@optimizely/axiom-icons");
|
|
9
10
|
const SettingsStoreViewer = ({ settings, onUpdate }) => {
|
|
10
11
|
const [expandedSections, setExpandedSections] = (0, react_1.useState)(new Set());
|
|
11
12
|
const [hiddenFields, setHiddenFields] = (0, react_1.useState)(new Set());
|
|
@@ -115,7 +116,7 @@ const SettingsStoreViewer = ({ settings, onUpdate }) => {
|
|
|
115
116
|
};
|
|
116
117
|
const sectionNames = Object.keys(settings).sort();
|
|
117
118
|
if (sectionNames.length === 0) {
|
|
118
|
-
return ((0, jsx_runtime_1.jsx)("div", { className: "settings-store-viewer empty", children: (0, jsx_runtime_1.jsxs)("div", { className: "empty-message", children: [(0, jsx_runtime_1.jsx)(
|
|
119
|
+
return ((0, jsx_runtime_1.jsx)("div", { className: "settings-store-viewer empty", children: (0, jsx_runtime_1.jsxs)("div", { className: "empty-message", children: [(0, jsx_runtime_1.jsx)(axiom_icons_1.IconGear, { size: "xl" }), (0, jsx_runtime_1.jsx)("p", { children: "No settings configured" })] }) }));
|
|
119
120
|
}
|
|
120
121
|
return ((0, jsx_runtime_1.jsx)("div", { className: "settings-store-viewer compact-store", children: (0, jsx_runtime_1.jsx)("div", { className: "store-sections", children: sectionNames.map((sectionName) => {
|
|
121
122
|
const section = settings[sectionName];
|
|
@@ -124,7 +125,7 @@ const SettingsStoreViewer = ({ settings, onUpdate }) => {
|
|
|
124
125
|
return ((0, jsx_runtime_1.jsxs)("div", { className: "store-section", children: [(0, jsx_runtime_1.jsxs)("div", { className: "section-header", onClick: () => toggleSection(sectionName), children: [(0, jsx_runtime_1.jsx)("span", { className: "expand-icon", children: isExpanded ? '▼' : '▶' }), (0, jsx_runtime_1.jsx)("span", { className: "section-name", children: sectionName }), (0, jsx_runtime_1.jsxs)("span", { className: "field-count", children: ["(", fieldNames.length, ")"] })] }), isExpanded && ((0, jsx_runtime_1.jsx)("div", { className: "section-fields", children: fieldNames.map((fieldName) => {
|
|
125
126
|
const field = section[fieldName];
|
|
126
127
|
const fieldId = `${sectionName}.${fieldName}`;
|
|
127
|
-
return ((0, jsx_runtime_1.jsxs)("div", { className: "field-row", children: [(0, jsx_runtime_1.jsx)("div", { className: "field-key", children: fieldName }), (0, jsx_runtime_1.jsx)("div", { className: "field-value", children: renderFieldValue(field, fieldId) }), (0, jsx_runtime_1.jsxs)("div", { className: "field-metadata", children: [field.isSecret && ((0, jsx_runtime_1.jsx)(EyeIcon_1.default, { isVisible: hiddenFields.has(fieldId), onClick: () => toggleFieldVisibility(fieldId), className: "metadata-icon" })), (0, jsx_runtime_1.jsx)("button", { className: "edit-icon", onClick: () => startEditing(sectionName, fieldName, field.value), title: "Edit", children: "
|
|
128
|
+
return ((0, jsx_runtime_1.jsxs)("div", { className: "field-row", children: [(0, jsx_runtime_1.jsx)("div", { className: "field-key", children: fieldName }), (0, jsx_runtime_1.jsx)("div", { className: "field-value", children: renderFieldValue(field, fieldId) }), (0, jsx_runtime_1.jsxs)("div", { className: "field-metadata", children: [field.isSecret && ((0, jsx_runtime_1.jsx)(EyeIcon_1.default, { isVisible: hiddenFields.has(fieldId), onClick: () => toggleFieldVisibility(fieldId), className: "metadata-icon" })), (0, jsx_runtime_1.jsx)("button", { className: "edit-icon", onClick: () => startEditing(sectionName, fieldName, field.value), title: "Edit", children: (0, jsx_runtime_1.jsx)(axiom_icons_1.IconPen, { size: "2xs" }) }), field.hasLocalValue && ((0, jsx_runtime_1.jsx)("span", { className: "metadata-badge local", title: "Has local value", children: "local" })), !field.isFromYml && ((0, jsx_runtime_1.jsx)("span", { className: "metadata-badge local-only", title: "Local only", children: "local only" }))] })] }, fieldName));
|
|
128
129
|
}) }))] }, sectionName));
|
|
129
130
|
}) }) }));
|
|
130
131
|
};
|