@optimizely/ocp-local-env 1.0.0-beta.6 → 1.0.0-beta.7
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 +2 -1
- package/dist/public/bundle.7a5338c67e783e9b42f7.js +3 -0
- package/dist/public/{bundle.932ab47a0dbf0319bc8b.js.LICENSE.txt → bundle.7a5338c67e783e9b42f7.js.LICENSE.txt} +33 -0
- package/dist/public/bundle.7a5338c67e783e9b42f7.js.map +1 -0
- package/dist/public/index.html +1 -1
- package/dist/src/executor/DestinationExecutor.js +10 -7
- package/dist/src/executor/DestinationExecutor.js.map +1 -1
- package/dist/src/executor/FunctionExecutor.js +1 -1
- package/dist/src/executor/FunctionExecutor.js.map +1 -1
- package/dist/src/executor/JobExecutor.js +1 -1
- package/dist/src/executor/JobExecutor.js.map +1 -1
- package/dist/src/executor/LifecycleExecutor.js +1 -1
- package/dist/src/executor/LifecycleExecutor.js.map +1 -1
- package/dist/src/executor/SourceExecutor.d.ts +32 -0
- package/dist/src/executor/SourceExecutor.js +161 -0
- package/dist/src/executor/SourceExecutor.js.map +1 -0
- package/dist/src/local_engine/LocalJobApi.d.ts +38 -0
- package/dist/src/local_engine/LocalJobApi.js +180 -0
- package/dist/src/local_engine/LocalJobApi.js.map +1 -0
- package/dist/src/local_engine/local-engine-child-base.d.ts +16 -0
- package/dist/src/local_engine/local-engine-child-base.js +201 -14
- package/dist/src/local_engine/local-engine-child-base.js.map +1 -1
- package/dist/src/local_engine/local-engine-client.d.ts +70 -1
- package/dist/src/local_engine/local-engine-client.js +545 -26
- package/dist/src/local_engine/local-engine-client.js.map +1 -1
- package/dist/src/local_engine/local-engine-types.d.ts +98 -2
- package/dist/src/local_engine/local-engine-unified.d.ts +18 -0
- package/dist/src/local_engine/local-engine-unified.js +227 -1
- package/dist/src/local_engine/local-engine-unified.js.map +1 -1
- package/dist/src/local_engine/local-engine-utils.js +34 -7
- package/dist/src/local_engine/local-engine-utils.js.map +1 -1
- package/dist/src/local_engine/localSDKConfig.js +237 -39
- package/dist/src/local_engine/localSDKConfig.js.map +1 -1
- package/dist/src/local_engine/storage/LocalConfigStore.d.ts +18 -0
- package/dist/src/local_engine/storage/LocalConfigStore.js +52 -3
- package/dist/src/local_engine/storage/LocalConfigStore.js.map +1 -1
- package/dist/src/local_engine/storage/LocalJobStore.d.ts +1 -0
- package/dist/src/local_engine/storage/LocalJobStore.js +12 -2
- package/dist/src/local_engine/storage/LocalJobStore.js.map +1 -1
- package/dist/src/local_engine/storage/LocalKVStore.d.ts +1 -0
- package/dist/src/local_engine/storage/LocalKVStore.js +134 -75
- package/dist/src/local_engine/storage/LocalKVStore.js.map +1 -1
- package/dist/src/local_engine/storage/LocalNotificationStore.d.ts +1 -0
- package/dist/src/local_engine/storage/LocalNotificationStore.js +17 -3
- package/dist/src/local_engine/storage/LocalNotificationStore.js.map +1 -1
- package/dist/src/local_engine/storage/LocalSecretsStore.d.ts +1 -0
- package/dist/src/local_engine/storage/LocalSecretsStore.js +37 -6
- package/dist/src/local_engine/storage/LocalSecretsStore.js.map +1 -1
- package/dist/src/local_engine/storage/LocalSettingsStore.d.ts +1 -0
- package/dist/src/local_engine/storage/LocalSettingsStore.js +61 -11
- package/dist/src/local_engine/storage/LocalSettingsStore.js.map +1 -1
- package/dist/src/local_engine/storage/SourceDataStore.d.ts +23 -0
- package/dist/src/local_engine/storage/SourceDataStore.js +83 -0
- package/dist/src/local_engine/storage/SourceDataStore.js.map +1 -0
- package/dist/src/local_engine/storage/SourceJobExecutionStore.d.ts +25 -0
- package/dist/src/local_engine/storage/SourceJobExecutionStore.js +61 -0
- package/dist/src/local_engine/storage/SourceJobExecutionStore.js.map +1 -0
- package/dist/src/local_engine/utils.js +20 -4
- package/dist/src/local_engine/utils.js.map +1 -1
- package/dist/src/logging/LogManager.d.ts +191 -34
- package/dist/src/logging/LogManager.js +209 -103
- package/dist/src/logging/LogManager.js.map +1 -1
- package/dist/src/server/api/destinations.js +30 -6
- package/dist/src/server/api/destinations.js.map +1 -1
- package/dist/src/server/api/jobs.js +3 -0
- package/dist/src/server/api/jobs.js.map +1 -1
- package/dist/src/server/api/sources.d.ts +7 -0
- package/dist/src/server/api/sources.js +380 -0
- package/dist/src/server/api/sources.js.map +1 -0
- package/dist/src/server/api.js +64 -3
- package/dist/src/server/api.js.map +1 -1
- package/dist/src/server.js +203 -19
- package/dist/src/server.js.map +1 -1
- package/dist/src/ui/components/App.js +165 -21
- package/dist/src/ui/components/App.js.map +1 -1
- package/dist/src/ui/components/DestinationsView.d.ts +8 -0
- package/dist/src/ui/components/DestinationsView.js +30 -9
- package/dist/src/ui/components/DestinationsView.js.map +1 -1
- package/dist/src/ui/components/FunctionsView.d.ts +7 -0
- package/dist/src/ui/components/FunctionsView.js +69 -9
- package/dist/src/ui/components/FunctionsView.js.map +1 -1
- package/dist/src/ui/components/JobsView.d.ts +7 -0
- package/dist/src/ui/components/JobsView.js +55 -15
- package/dist/src/ui/components/JobsView.js.map +1 -1
- package/dist/src/ui/components/SourceDataViewer.d.ts +8 -0
- package/dist/src/ui/components/SourceDataViewer.js +84 -0
- package/dist/src/ui/components/SourceDataViewer.js.map +1 -0
- package/dist/src/ui/components/SourceJobsSection.d.ts +8 -0
- package/dist/src/ui/components/SourceJobsSection.js +99 -0
- package/dist/src/ui/components/SourceJobsSection.js.map +1 -0
- package/dist/src/ui/components/SourceLifecycleSection.d.ts +7 -0
- package/dist/src/ui/components/SourceLifecycleSection.js +58 -0
- package/dist/src/ui/components/SourceLifecycleSection.js.map +1 -0
- package/dist/src/ui/components/SourceSchemaViewer.d.ts +7 -0
- package/dist/src/ui/components/SourceSchemaViewer.js +65 -0
- package/dist/src/ui/components/SourceSchemaViewer.js.map +1 -0
- package/dist/src/ui/components/SourceWebhookEditor.d.ts +8 -0
- package/dist/src/ui/components/SourceWebhookEditor.js +168 -0
- package/dist/src/ui/components/SourceWebhookEditor.js.map +1 -0
- package/dist/src/ui/components/SourcesView.d.ts +14 -0
- package/dist/src/ui/components/SourcesView.js +74 -0
- package/dist/src/ui/components/SourcesView.js.map +1 -0
- package/dist/src/ui/components/TabbedConsole.d.ts +3 -1
- package/dist/src/ui/components/TabbedConsole.js +81 -11
- package/dist/src/ui/components/TabbedConsole.js.map +1 -1
- package/dist/src/ui/hooks/useEntityNavigation.d.ts +72 -0
- package/dist/src/ui/hooks/useEntityNavigation.js +150 -0
- package/dist/src/ui/hooks/useEntityNavigation.js.map +1 -0
- package/dist/src/ui/hooks/useQueryParams.d.ts +6 -0
- package/dist/src/ui/hooks/useQueryParams.js +39 -0
- package/dist/src/ui/hooks/useQueryParams.js.map +1 -0
- package/dist/src/ui/index.js +3 -2
- package/dist/src/ui/index.js.map +1 -1
- package/package.json +2 -1
- package/dist/public/bundle.932ab47a0dbf0319bc8b.js +0 -3
- package/dist/public/bundle.932ab47a0dbf0319bc8b.js.map +0 -1
- package/dist/src/server/api/lifecycle.d.ts +0 -6
- package/dist/src/server/api/lifecycle.js +0 -72
- package/dist/src/server/api/lifecycle.js.map +0 -1
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SourceJobsSection = void 0;
|
|
4
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
|
+
const react_1 = require("react");
|
|
6
|
+
const useQueryParams_1 = require("../hooks/useQueryParams");
|
|
7
|
+
const SourceDataViewer_1 = require("./SourceDataViewer");
|
|
8
|
+
const SourceJobsSection = ({ sourceId, jobs, apiBaseUrl }) => {
|
|
9
|
+
const { getParam, setParams } = (0, useQueryParams_1.useQueryParams)();
|
|
10
|
+
const [executions, setExecutions] = (0, react_1.useState)([]);
|
|
11
|
+
const [expandedResult, setExpandedResult] = (0, react_1.useState)(false);
|
|
12
|
+
const [loading, setLoading] = (0, react_1.useState)(false);
|
|
13
|
+
const [error, setError] = (0, react_1.useState)(null);
|
|
14
|
+
const jobList = Object.entries(jobs);
|
|
15
|
+
// Derive selection from URL (only when on jobs tab)
|
|
16
|
+
const selectedJobId = getParam('sourceJob');
|
|
17
|
+
const selectedExecutionId = getParam('execution');
|
|
18
|
+
const selectedJob = jobList.find(([id]) => id === selectedJobId)?.[0] || null;
|
|
19
|
+
const selectedExecution = executions.find((e) => e.timestamp?.toString() === selectedExecutionId) || null;
|
|
20
|
+
const handleJobSelect = (0, react_1.useCallback)((jobId, replace = false) => {
|
|
21
|
+
setParams({ sourceJob: jobId, execution: null }, replace);
|
|
22
|
+
}, [setParams]);
|
|
23
|
+
const handleExecutionSelect = (0, react_1.useCallback)((execution, replace = false) => {
|
|
24
|
+
setParams({ execution: execution.timestamp.toString() }, replace);
|
|
25
|
+
}, [setParams]);
|
|
26
|
+
// Auto-select first job
|
|
27
|
+
(0, react_1.useEffect)(() => {
|
|
28
|
+
if (jobList.length > 0 && !selectedJobId) {
|
|
29
|
+
handleJobSelect(jobList[0][0], true); // replace: true for auto-selection
|
|
30
|
+
}
|
|
31
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
32
|
+
}, [jobList, selectedJobId]);
|
|
33
|
+
// Fetch executions when job is selected
|
|
34
|
+
(0, react_1.useEffect)(() => {
|
|
35
|
+
if (selectedJob) {
|
|
36
|
+
fetchExecutions(selectedJob);
|
|
37
|
+
}
|
|
38
|
+
}, [selectedJob]);
|
|
39
|
+
// Auto-select first execution when job changes
|
|
40
|
+
(0, react_1.useEffect)(() => {
|
|
41
|
+
if (executions.length > 0 && !selectedExecutionId) {
|
|
42
|
+
handleExecutionSelect(executions[0], true); // replace: true for auto-selection
|
|
43
|
+
}
|
|
44
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
45
|
+
}, [executions, selectedExecutionId]);
|
|
46
|
+
const fetchExecutions = async (jobId) => {
|
|
47
|
+
try {
|
|
48
|
+
const response = await fetch(`${apiBaseUrl}/sources/${sourceId}/jobs/${jobId}/executions`);
|
|
49
|
+
if (!response.ok) {
|
|
50
|
+
throw new Error('Failed to fetch executions');
|
|
51
|
+
}
|
|
52
|
+
const data = await response.json();
|
|
53
|
+
const jobExecutions = data.executions || [];
|
|
54
|
+
setExecutions(jobExecutions);
|
|
55
|
+
if (jobExecutions.length === 0) {
|
|
56
|
+
setParams({ execution: null });
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
catch (err) {
|
|
60
|
+
console.error(`Failed to fetch executions for job ${jobId}:`, err);
|
|
61
|
+
setExecutions([]);
|
|
62
|
+
setParams({ execution: null });
|
|
63
|
+
}
|
|
64
|
+
};
|
|
65
|
+
const runJob = async (jobId) => {
|
|
66
|
+
try {
|
|
67
|
+
setLoading(true);
|
|
68
|
+
setError(null);
|
|
69
|
+
const response = await fetch(`${apiBaseUrl}/sources/${sourceId}/jobs/${jobId}`, {
|
|
70
|
+
method: 'POST',
|
|
71
|
+
headers: { 'Content-Type': 'application/json' },
|
|
72
|
+
body: JSON.stringify({ parameters: {} })
|
|
73
|
+
});
|
|
74
|
+
if (!response.ok) {
|
|
75
|
+
const errorData = await response.json();
|
|
76
|
+
throw new Error(errorData.error || 'Failed to run job');
|
|
77
|
+
}
|
|
78
|
+
// Refresh executions
|
|
79
|
+
await fetchExecutions(jobId);
|
|
80
|
+
}
|
|
81
|
+
catch (err) {
|
|
82
|
+
setError(`Failed to run job ${jobId}: ${err.message}`);
|
|
83
|
+
console.error(err);
|
|
84
|
+
}
|
|
85
|
+
finally {
|
|
86
|
+
setLoading(false);
|
|
87
|
+
}
|
|
88
|
+
};
|
|
89
|
+
const formatTimestamp = (timestamp) => {
|
|
90
|
+
const date = new Date(timestamp);
|
|
91
|
+
return date.toLocaleString();
|
|
92
|
+
};
|
|
93
|
+
const getStatusColor = (success) => {
|
|
94
|
+
return success ? '#28a745' : '#dc3545';
|
|
95
|
+
};
|
|
96
|
+
return ((0, jsx_runtime_1.jsxs)("div", { className: "source-jobs-container", children: [(0, jsx_runtime_1.jsxs)("div", { className: "source-jobs-controls", children: [(0, jsx_runtime_1.jsxs)("div", { className: "job-selector-group", children: [(0, jsx_runtime_1.jsx)("label", { htmlFor: "job-select", children: "Source Job:" }), (0, jsx_runtime_1.jsx)("select", { id: "job-select", value: selectedJob || '', onChange: (e) => handleJobSelect(e.target.value), disabled: jobList.length === 0, children: jobList.length === 0 ? ((0, jsx_runtime_1.jsx)("option", { value: "", children: "No jobs defined" })) : (jobList.map(([jobId, jobConfig]) => ((0, jsx_runtime_1.jsxs)("option", { value: jobId, children: [jobId, " - ", jobConfig.description || 'No description'] }, jobId)))) })] }), selectedJob && ((0, jsx_runtime_1.jsx)("button", { className: "start-job-btn", onClick: () => runJob(selectedJob), disabled: loading, children: loading ? 'Running...' : 'Run Job' }))] }), (0, jsx_runtime_1.jsxs)("div", { className: "source-jobs-panels", children: [(0, jsx_runtime_1.jsxs)("div", { className: "executions-panel", children: [(0, jsx_runtime_1.jsxs)("div", { className: "executions-header", children: [(0, jsx_runtime_1.jsx)("h4", { children: "Execution History" }), selectedJob && ((0, jsx_runtime_1.jsxs)("span", { className: "selected-job", children: ["Job: ", selectedJob] }))] }), (0, jsx_runtime_1.jsx)("div", { className: "executions-list", children: executions.length === 0 ? ((0, jsx_runtime_1.jsx)("div", { className: "no-executions", children: (0, jsx_runtime_1.jsx)("p", { children: selectedJob ? 'No executions yet' : 'Select a job to see executions' }) })) : (executions.map((execution, index) => ((0, jsx_runtime_1.jsxs)("div", { className: `execution-item ${selectedExecution === execution ? 'active' : ''}`, onClick: () => handleExecutionSelect(execution), children: [(0, jsx_runtime_1.jsxs)("div", { className: "execution-status", children: [(0, jsx_runtime_1.jsx)("span", { className: "status-dot", style: { backgroundColor: getStatusColor(execution.success) } }), (0, jsx_runtime_1.jsx)("span", { className: "status-text", children: execution.success ? 'Completed' : 'Failed' })] }), (0, jsx_runtime_1.jsxs)("div", { className: "execution-time", children: [(0, jsx_runtime_1.jsx)("div", { className: "started-at", children: formatTimestamp(execution.timestamp) }), (0, jsx_runtime_1.jsxs)("div", { className: "execution-duration", children: ["Duration: ", execution.executionTime, "ms"] })] }), (0, jsx_runtime_1.jsx)("div", { className: "execution-stats", children: (0, jsx_runtime_1.jsx)("span", { className: "state-count", children: "1 state" }) }), execution.error && ((0, jsx_runtime_1.jsxs)("div", { className: "execution-error", children: ["Error: ", execution.error] }))] }, index)))) })] }), (0, jsx_runtime_1.jsxs)("div", { className: "source-jobs-right-column", children: [(0, jsx_runtime_1.jsxs)("div", { className: "states-panel", children: [(0, jsx_runtime_1.jsxs)("div", { className: "states-header", children: [(0, jsx_runtime_1.jsx)("h4", { children: "Job States" }), selectedExecution && ((0, jsx_runtime_1.jsxs)("span", { className: "selected-execution", children: ["Execution: ", selectedExecution.timestamp.toString().slice(0, 8), "..."] }))] }), (0, jsx_runtime_1.jsx)("div", { className: "states-list", children: !selectedExecution ? ((0, jsx_runtime_1.jsx)("div", { className: "no-states", children: (0, jsx_runtime_1.jsx)("p", { children: "Select an execution to see states" }) })) : ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [selectedExecution.result && ((0, jsx_runtime_1.jsxs)("div", { className: "state-item", children: [(0, jsx_runtime_1.jsxs)("div", { className: "state-header", onClick: () => setExpandedResult(!expandedResult), children: [(0, jsx_runtime_1.jsxs)("div", { className: "state-meta", children: [(0, jsx_runtime_1.jsxs)("div", { className: "state-primary-info", children: [(0, jsx_runtime_1.jsx)("span", { className: "state-timestamp", children: formatTimestamp(selectedExecution.timestamp) }), (0, jsx_runtime_1.jsx)("span", { className: "state-phase perform", children: "PERFORM" })] }), (0, jsx_runtime_1.jsx)("div", { className: "state-secondary-info", children: (0, jsx_runtime_1.jsx)("span", { className: `state-status ${selectedExecution.success ? 'complete' : 'error'}`, children: selectedExecution.success ? 'Completed' : 'Error' }) })] }), (0, jsx_runtime_1.jsx)("div", { className: "state-expand", children: (0, jsx_runtime_1.jsx)("span", { className: `expand-icon ${expandedResult ? 'expanded' : ''}`, children: "\u25BC" }) })] }), expandedResult && ((0, jsx_runtime_1.jsx)("div", { className: "state-content", children: (0, jsx_runtime_1.jsx)("pre", { children: JSON.stringify(selectedExecution.result, null, 2) }) }))] })), selectedExecution.error && !selectedExecution.result && ((0, jsx_runtime_1.jsxs)("div", { className: "state-item", children: [(0, jsx_runtime_1.jsxs)("div", { className: "state-header", onClick: () => setExpandedResult(!expandedResult), children: [(0, jsx_runtime_1.jsxs)("div", { className: "state-meta", children: [(0, jsx_runtime_1.jsxs)("div", { className: "state-primary-info", children: [(0, jsx_runtime_1.jsx)("span", { className: "state-timestamp", children: formatTimestamp(selectedExecution.timestamp) }), (0, jsx_runtime_1.jsx)("span", { className: "state-phase perform", children: "PERFORM" })] }), (0, jsx_runtime_1.jsx)("div", { className: "state-secondary-info", children: (0, jsx_runtime_1.jsx)("span", { className: "state-status error", children: "Error" }) })] }), (0, jsx_runtime_1.jsx)("div", { className: "state-expand", children: (0, jsx_runtime_1.jsx)("span", { className: `expand-icon ${expandedResult ? 'expanded' : ''}`, children: "\u25BC" }) })] }), expandedResult && ((0, jsx_runtime_1.jsx)("div", { className: "state-content", children: (0, jsx_runtime_1.jsx)("pre", { children: selectedExecution.error }) }))] }))] })) })] }), (0, jsx_runtime_1.jsx)("div", { className: "source-panel", children: (0, jsx_runtime_1.jsx)(SourceDataViewer_1.SourceDataViewer, { sourceId: sourceId, apiBaseUrl: apiBaseUrl, context: "job" }) })] })] }), error && ((0, jsx_runtime_1.jsx)("div", { className: "toast-notification toast-error", children: (0, jsx_runtime_1.jsxs)("div", { className: "toast-content", children: [(0, jsx_runtime_1.jsx)("strong", { children: "Error" }), (0, jsx_runtime_1.jsx)("div", { className: "toast-message", children: error })] }) }))] }));
|
|
97
|
+
};
|
|
98
|
+
exports.SourceJobsSection = SourceJobsSection;
|
|
99
|
+
//# sourceMappingURL=SourceJobsSection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SourceJobsSection.js","sourceRoot":"","sources":["../../../../src/ui/components/SourceJobsSection.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SourceLifecycleSection = void 0;
|
|
4
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
|
+
const react_1 = require("react");
|
|
6
|
+
const SourceLifecycleSection = ({ sourceId, apiBaseUrl }) => {
|
|
7
|
+
const [loading, setLoading] = (0, react_1.useState)({});
|
|
8
|
+
const [lastResponse, setLastResponse] = (0, react_1.useState)(null);
|
|
9
|
+
const lifecycleMethods = [
|
|
10
|
+
{ id: 'create', label: 'Create', description: 'Setup source webhooks' },
|
|
11
|
+
{ id: 'update', label: 'Update', description: 'Update source configuration' },
|
|
12
|
+
{ id: 'delete', label: 'Delete', description: 'Cleanup tasks' },
|
|
13
|
+
{ id: 'enable', label: 'Enable', description: 'Enable source' },
|
|
14
|
+
{ id: 'pause', label: 'Pause', description: 'Pause source' }
|
|
15
|
+
];
|
|
16
|
+
const executeLifecycle = async (action) => {
|
|
17
|
+
try {
|
|
18
|
+
setLoading(prev => ({ ...prev, [action]: true }));
|
|
19
|
+
const response = await fetch(`${apiBaseUrl}/sources/${sourceId}/${action}`, {
|
|
20
|
+
method: 'POST',
|
|
21
|
+
headers: { 'Content-Type': 'application/json' }
|
|
22
|
+
});
|
|
23
|
+
if (!response.ok) {
|
|
24
|
+
const errorData = await response.json();
|
|
25
|
+
throw new Error(errorData.error || `Failed to execute ${action}`);
|
|
26
|
+
}
|
|
27
|
+
const data = await response.json();
|
|
28
|
+
const result = data.result;
|
|
29
|
+
// Store response for display
|
|
30
|
+
setLastResponse({
|
|
31
|
+
action,
|
|
32
|
+
timestamp: Date.now(),
|
|
33
|
+
success: result.success,
|
|
34
|
+
message: result.message
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
catch (err) {
|
|
38
|
+
// Store error response
|
|
39
|
+
setLastResponse({
|
|
40
|
+
action,
|
|
41
|
+
timestamp: Date.now(),
|
|
42
|
+
success: false,
|
|
43
|
+
message: err.message
|
|
44
|
+
});
|
|
45
|
+
console.error(err);
|
|
46
|
+
}
|
|
47
|
+
finally {
|
|
48
|
+
setLoading(prev => ({ ...prev, [action]: false }));
|
|
49
|
+
}
|
|
50
|
+
};
|
|
51
|
+
const formatTimestamp = (timestamp) => {
|
|
52
|
+
const date = new Date(timestamp);
|
|
53
|
+
return date.toLocaleString();
|
|
54
|
+
};
|
|
55
|
+
return ((0, jsx_runtime_1.jsx)("div", { className: "source-lifecycle-container", children: (0, jsx_runtime_1.jsxs)("div", { className: "lifecycle-two-panel", children: [(0, jsx_runtime_1.jsxs)("div", { className: "lifecycle-methods-panel", children: [(0, jsx_runtime_1.jsxs)("div", { className: "panel-header", children: [(0, jsx_runtime_1.jsx)("h3", { children: "Lifecycle Hooks" }), (0, jsx_runtime_1.jsxs)("p", { className: "panel-description", children: ["Trigger lifecycle callbacks for ", (0, jsx_runtime_1.jsx)("strong", { children: sourceId })] })] }), (0, jsx_runtime_1.jsx)("div", { className: "lifecycle-methods-list", children: lifecycleMethods.map(method => ((0, jsx_runtime_1.jsx)("div", { className: "lifecycle-method-item", children: (0, jsx_runtime_1.jsxs)("div", { className: "method-header", children: [(0, jsx_runtime_1.jsxs)("div", { className: "method-info", children: [(0, jsx_runtime_1.jsx)("h4", { children: method.label }), (0, jsx_runtime_1.jsx)("p", { children: method.description })] }), (0, jsx_runtime_1.jsx)("button", { className: "lifecycle-trigger-btn", onClick: () => executeLifecycle(method.id), disabled: loading[method.id], children: loading[method.id] ? 'Running...' : 'Trigger' })] }) }, method.id))) })] }), (0, jsx_runtime_1.jsxs)("div", { className: "lifecycle-response-panel", children: [(0, jsx_runtime_1.jsx)("div", { className: "panel-header", children: (0, jsx_runtime_1.jsx)("h3", { children: "Response" }) }), (0, jsx_runtime_1.jsx)("div", { className: "response-content", children: !lastResponse ? ((0, jsx_runtime_1.jsxs)("div", { className: "no-response", children: [(0, jsx_runtime_1.jsx)("p", { children: "No lifecycle hook has been triggered yet." }), (0, jsx_runtime_1.jsx)("p", { className: "hint", children: "Click a \"Trigger\" button to execute a lifecycle hook." })] })) : ((0, jsx_runtime_1.jsxs)("div", { className: "response-details", children: [(0, jsx_runtime_1.jsxs)("div", { className: "response-header", children: [(0, jsx_runtime_1.jsxs)("div", { className: `response-status ${lastResponse.success ? 'success' : 'error'}`, children: [(0, jsx_runtime_1.jsx)("span", { className: "status-dot" }), (0, jsx_runtime_1.jsx)("span", { className: "status-text", children: lastResponse.success ? 'Success' : 'Error' })] }), (0, jsx_runtime_1.jsxs)("div", { className: "response-meta", children: [(0, jsx_runtime_1.jsx)("span", { className: "response-action", children: lastResponse.action }), (0, jsx_runtime_1.jsx)("span", { className: "response-time", children: formatTimestamp(lastResponse.timestamp) })] })] }), lastResponse.message && ((0, jsx_runtime_1.jsxs)("div", { className: "response-message", children: [(0, jsx_runtime_1.jsx)("label", { children: "Message:" }), (0, jsx_runtime_1.jsx)("pre", { children: lastResponse.message })] }))] })) })] })] }) }));
|
|
56
|
+
};
|
|
57
|
+
exports.SourceLifecycleSection = SourceLifecycleSection;
|
|
58
|
+
//# sourceMappingURL=SourceLifecycleSection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SourceLifecycleSection.js","sourceRoot":"","sources":["../../../../src/ui/components/SourceLifecycleSection.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SourceSchemaViewer = void 0;
|
|
4
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
|
+
const react_1 = require("react");
|
|
6
|
+
const SourceSchemaViewer = ({ sourceId, apiBaseUrl }) => {
|
|
7
|
+
const [schema, setSchema] = (0, react_1.useState)(null);
|
|
8
|
+
const [loading, setLoading] = (0, react_1.useState)(true);
|
|
9
|
+
const [error, setError] = (0, react_1.useState)(null);
|
|
10
|
+
const [expandedTypes, setExpandedTypes] = (0, react_1.useState)(new Set());
|
|
11
|
+
(0, react_1.useEffect)(() => {
|
|
12
|
+
fetchSchema();
|
|
13
|
+
}, [sourceId]);
|
|
14
|
+
const fetchSchema = async () => {
|
|
15
|
+
try {
|
|
16
|
+
setLoading(true);
|
|
17
|
+
setError(null);
|
|
18
|
+
const response = await fetch(`${apiBaseUrl}/sources/${sourceId}/schema`);
|
|
19
|
+
if (!response.ok) {
|
|
20
|
+
const errorData = await response.json();
|
|
21
|
+
throw new Error(errorData.error || 'Failed to load schema');
|
|
22
|
+
}
|
|
23
|
+
const data = await response.json();
|
|
24
|
+
setSchema(data.schema);
|
|
25
|
+
}
|
|
26
|
+
catch (err) {
|
|
27
|
+
setError(err.message);
|
|
28
|
+
console.error('Failed to load schema:', err);
|
|
29
|
+
}
|
|
30
|
+
finally {
|
|
31
|
+
setLoading(false);
|
|
32
|
+
}
|
|
33
|
+
};
|
|
34
|
+
const toggleCustomType = (typeName) => {
|
|
35
|
+
setExpandedTypes(prev => {
|
|
36
|
+
const newSet = new Set(prev);
|
|
37
|
+
if (newSet.has(typeName)) {
|
|
38
|
+
newSet.delete(typeName);
|
|
39
|
+
}
|
|
40
|
+
else {
|
|
41
|
+
newSet.add(typeName);
|
|
42
|
+
}
|
|
43
|
+
return newSet;
|
|
44
|
+
});
|
|
45
|
+
};
|
|
46
|
+
const renderFieldRow = (field) => {
|
|
47
|
+
return ((0, jsx_runtime_1.jsxs)("tr", { className: field.primary ? 'primary-field' : '', children: [(0, jsx_runtime_1.jsx)("td", { className: "field-name", children: field.name }), (0, jsx_runtime_1.jsx)("td", { className: "field-display-name", children: field.display_name }), (0, jsx_runtime_1.jsxs)("td", { className: "field-type", children: [(0, jsx_runtime_1.jsx)("span", { className: `type-badge type-${field.type.replace(/[^a-z]/gi, '')}`, children: field.type }), field.primary && (0, jsx_runtime_1.jsx)("span", { className: "primary-badge", children: "PRIMARY" })] }), (0, jsx_runtime_1.jsx)("td", { className: "field-description", children: field.description })] }, field.name));
|
|
48
|
+
};
|
|
49
|
+
if (loading) {
|
|
50
|
+
return (0, jsx_runtime_1.jsx)("div", { className: "schema-viewer", children: "Loading schema..." });
|
|
51
|
+
}
|
|
52
|
+
if (error) {
|
|
53
|
+
return ((0, jsx_runtime_1.jsxs)("div", { className: "schema-viewer error", children: [(0, jsx_runtime_1.jsx)("h3", { children: "Schema Error" }), (0, jsx_runtime_1.jsx)("p", { children: error })] }));
|
|
54
|
+
}
|
|
55
|
+
if (!schema) {
|
|
56
|
+
return (0, jsx_runtime_1.jsx)("div", { className: "schema-viewer", children: "No schema available" });
|
|
57
|
+
}
|
|
58
|
+
// Handle string schemas (e.g., "asset", "account")
|
|
59
|
+
if (typeof schema === 'string') {
|
|
60
|
+
return ((0, jsx_runtime_1.jsx)("div", { className: "schema-viewer", children: (0, jsx_runtime_1.jsxs)("div", { className: "schema-header", children: [(0, jsx_runtime_1.jsxs)("h4", { children: ["Schema Type: ", schema] }), (0, jsx_runtime_1.jsx)("p", { className: "schema-description", children: "Static schema identifier" })] }) }));
|
|
61
|
+
}
|
|
62
|
+
return ((0, jsx_runtime_1.jsxs)("div", { className: "schema-viewer", children: [(0, jsx_runtime_1.jsxs)("div", { className: "schema-header", children: [(0, jsx_runtime_1.jsx)("h4", { children: schema.display_name || 'Schema' }), (0, jsx_runtime_1.jsx)("p", { className: "schema-description", children: schema.description || '' })] }), schema.fields && schema.fields.length > 0 && ((0, jsx_runtime_1.jsxs)("div", { className: "schema-fields", children: [(0, jsx_runtime_1.jsx)("h4", { children: "Fields" }), (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: "Display Name" }), (0, jsx_runtime_1.jsx)("th", { children: "Type" }), (0, jsx_runtime_1.jsx)("th", { children: "Description" })] }) }), (0, jsx_runtime_1.jsx)("tbody", { children: schema.fields.map(renderFieldRow) })] })] })), schema.custom_types && schema.custom_types.length > 0 && ((0, jsx_runtime_1.jsxs)("div", { className: "schema-custom-types", children: [(0, jsx_runtime_1.jsx)("h4", { children: "Custom Types" }), schema.custom_types.map(customType => ((0, jsx_runtime_1.jsxs)("div", { className: "custom-type", children: [(0, jsx_runtime_1.jsxs)("div", { className: "custom-type-header", onClick: () => toggleCustomType(customType.name), children: [(0, jsx_runtime_1.jsx)("span", { className: "expand-icon", children: expandedTypes.has(customType.name) ? '▼' : '▶' }), (0, jsx_runtime_1.jsx)("span", { className: "custom-type-name", children: customType.display_name }), (0, jsx_runtime_1.jsx)("span", { className: "custom-type-description", children: customType.description })] }), expandedTypes.has(customType.name) && ((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: "Display Name" }), (0, jsx_runtime_1.jsx)("th", { children: "Type" }), (0, jsx_runtime_1.jsx)("th", { children: "Description" })] }) }), (0, jsx_runtime_1.jsx)("tbody", { children: customType.fields.map(renderFieldRow) })] }))] }, customType.name)))] }))] }));
|
|
63
|
+
};
|
|
64
|
+
exports.SourceSchemaViewer = SourceSchemaViewer;
|
|
65
|
+
//# sourceMappingURL=SourceSchemaViewer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SourceSchemaViewer.js","sourceRoot":"","sources":["../../../../src/ui/components/SourceSchemaViewer.tsx"],"names":[],"mappings":";;;;AAAA,iCAAmD;AA+B5C,MAAM,kBAAkB,GAAsC,CAAC,EACpE,QAAQ,EACR,UAAU,EACX,EAAE,EAAE;IACH,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,IAAA,gBAAQ,EAA+B,IAAI,CAAC,CAAC;IACzE,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,IAAA,gBAAQ,EAAC,IAAI,CAAC,CAAC;IAC7C,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,IAAA,gBAAQ,EAAgB,IAAI,CAAC,CAAC;IACxD,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,IAAA,gBAAQ,EAAc,IAAI,GAAG,EAAE,CAAC,CAAC;IAE3E,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,WAAW,EAAE,CAAC;IAChB,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;IAEf,MAAM,WAAW,GAAG,KAAK,IAAI,EAAE;QAC7B,IAAI,CAAC;YACH,UAAU,CAAC,IAAI,CAAC,CAAC;YACjB,QAAQ,CAAC,IAAI,CAAC,CAAC;YACf,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,UAAU,YAAY,QAAQ,SAAS,CAAC,CAAC;YAEzE,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACjB,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;gBACxC,MAAM,IAAI,KAAK,CAAC,SAAS,CAAC,KAAK,IAAI,uBAAuB,CAAC,CAAC;YAC9D,CAAC;YAED,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YACnC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACzB,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YACtB,OAAO,CAAC,KAAK,CAAC,wBAAwB,EAAE,GAAG,CAAC,CAAC;QAC/C,CAAC;gBAAS,CAAC;YACT,UAAU,CAAC,KAAK,CAAC,CAAC;QACpB,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,gBAAgB,GAAG,CAAC,QAAgB,EAAE,EAAE;QAC5C,gBAAgB,CAAC,IAAI,CAAC,EAAE;YACtB,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC;YAC7B,IAAI,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACzB,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YAC1B,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YACvB,CAAC;YACD,OAAO,MAAM,CAAC;QAChB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;IAEF,MAAM,cAAc,GAAG,CAAC,KAAwB,EAAE,EAAE;QAClD,OAAO,CACL,gCAAqB,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,aAClE,+BAAI,SAAS,EAAC,YAAY,YAAE,KAAK,CAAC,IAAI,GAAM,EAC5C,+BAAI,SAAS,EAAC,oBAAoB,YAAE,KAAK,CAAC,YAAY,GAAM,EAC5D,gCAAI,SAAS,EAAC,YAAY,aACxB,iCAAM,SAAS,EAAE,mBAAmB,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,EAAE,YACrE,KAAK,CAAC,IAAI,GACN,EACN,KAAK,CAAC,OAAO,IAAI,iCAAM,SAAS,EAAC,eAAe,wBAAe,IAC7D,EACL,+BAAI,SAAS,EAAC,mBAAmB,YAAE,KAAK,CAAC,WAAW,GAAM,KATnD,KAAK,CAAC,IAAI,CAUd,CACN,CAAC;IACJ,CAAC,CAAC;IAEF,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,gCAAK,SAAS,EAAC,eAAe,kCAAwB,CAAC;IAChE,CAAC;IAED,IAAI,KAAK,EAAE,CAAC;QACV,OAAO,CACL,iCAAK,SAAS,EAAC,qBAAqB,aAClC,0DAAqB,EACrB,wCAAI,KAAK,GAAK,IACV,CACP,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,gCAAK,SAAS,EAAC,eAAe,oCAA0B,CAAC;IAClE,CAAC;IAED,mDAAmD;IACnD,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC/B,OAAO,CACL,gCAAK,SAAS,EAAC,eAAe,YAC5B,iCAAK,SAAS,EAAC,eAAe,aAC5B,4DAAkB,MAAM,IAAM,EAC9B,8BAAG,SAAS,EAAC,oBAAoB,yCAA6B,IAC1D,GACF,CACP,CAAC;IACJ,CAAC;IAED,OAAO,CACL,iCAAK,SAAS,EAAC,eAAe,aAC5B,iCAAK,SAAS,EAAC,eAAe,aAC5B,yCAAK,MAAM,CAAC,YAAY,IAAI,QAAQ,GAAM,EAC1C,8BAAG,SAAS,EAAC,oBAAoB,YAAE,MAAM,CAAC,WAAW,IAAI,EAAE,GAAK,IAC5D,EAEL,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,CAC5C,iCAAK,SAAS,EAAC,eAAe,aAC5B,oDAAe,EACf,mCAAO,SAAS,EAAC,cAAc,aAC7B,4CACE,2CACE,kDAAa,EACb,0DAAqB,EACrB,kDAAa,EACb,yDAAoB,IACjB,GACC,EACR,4CACG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,GAC5B,IACF,IACJ,CACP,EAEA,MAAM,CAAC,YAAY,IAAI,MAAM,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,IAAI,CACxD,iCAAK,SAAS,EAAC,qBAAqB,aAClC,0DAAqB,EACpB,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,CACrC,iCAA2B,SAAS,EAAC,aAAa,aAChD,iCACE,SAAS,EAAC,oBAAoB,EAC9B,OAAO,EAAE,GAAG,EAAE,CAAC,gBAAgB,CAAC,UAAU,CAAC,IAAI,CAAC,aAEhD,iCAAM,SAAS,EAAC,aAAa,YAC1B,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAC1C,EACP,iCAAM,SAAS,EAAC,kBAAkB,YAAE,UAAU,CAAC,YAAY,GAAQ,EACnE,iCAAM,SAAS,EAAC,yBAAyB,YAAE,UAAU,CAAC,WAAW,GAAQ,IACrE,EACL,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CACrC,mCAAO,SAAS,EAAC,cAAc,aAC7B,4CACE,2CACE,kDAAa,EACb,0DAAqB,EACrB,kDAAa,EACb,yDAAoB,IACjB,GACC,EACR,4CACG,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,GAChC,IACF,CACT,KAzBO,UAAU,CAAC,IAAI,CA0BnB,CACP,CAAC,IACE,CACP,IACG,CACP,CAAC;AACJ,CAAC,CAAC;AAzJW,QAAA,kBAAkB,sBAyJ7B"}
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SourceWebhookEditor = void 0;
|
|
4
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
|
+
const react_1 = require("react");
|
|
6
|
+
const SourceWebhookEditor = ({ sourceId, apiBaseUrl, webhookUrl }) => {
|
|
7
|
+
const [webhookData, setWebhookData] = (0, react_1.useState)('{\n \n}');
|
|
8
|
+
const [method, setMethod] = (0, react_1.useState)('POST');
|
|
9
|
+
const [response, setResponse] = (0, react_1.useState)(null);
|
|
10
|
+
const [loading, setLoading] = (0, react_1.useState)(false);
|
|
11
|
+
const [error, setError] = (0, react_1.useState)(null);
|
|
12
|
+
const [activeTab, setActiveTab] = (0, react_1.useState)('body');
|
|
13
|
+
const [responseTab, setResponseTab] = (0, react_1.useState)('body');
|
|
14
|
+
const [params, setParams] = (0, react_1.useState)([
|
|
15
|
+
{ key: '', value: '', enabled: true }
|
|
16
|
+
]);
|
|
17
|
+
const [headers, setHeaders] = (0, react_1.useState)([
|
|
18
|
+
{ key: 'Content-Type', value: 'application/json', enabled: true }
|
|
19
|
+
]);
|
|
20
|
+
// Clear webhook data when source changes
|
|
21
|
+
(0, react_1.useEffect)(() => {
|
|
22
|
+
setWebhookData('{\n \n}');
|
|
23
|
+
setResponse(null);
|
|
24
|
+
setError(null);
|
|
25
|
+
}, [sourceId]);
|
|
26
|
+
// Auto-clear error after 10 seconds
|
|
27
|
+
(0, react_1.useEffect)(() => {
|
|
28
|
+
if (error) {
|
|
29
|
+
const timer = setTimeout(() => {
|
|
30
|
+
setError(null);
|
|
31
|
+
}, 10000);
|
|
32
|
+
return () => clearTimeout(timer);
|
|
33
|
+
}
|
|
34
|
+
}, [error]);
|
|
35
|
+
const generateMockData = async () => {
|
|
36
|
+
try {
|
|
37
|
+
setLoading(true);
|
|
38
|
+
setError(null);
|
|
39
|
+
const response = await fetch(`${apiBaseUrl}/sources/${sourceId}/generate-mock`, {
|
|
40
|
+
method: 'POST',
|
|
41
|
+
headers: { 'Content-Type': 'application/json' }
|
|
42
|
+
});
|
|
43
|
+
if (!response.ok) {
|
|
44
|
+
const errorData = await response.json();
|
|
45
|
+
throw new Error(errorData.error || 'Failed to generate mock data');
|
|
46
|
+
}
|
|
47
|
+
const data = await response.json();
|
|
48
|
+
setWebhookData(JSON.stringify(data.data, null, 2));
|
|
49
|
+
}
|
|
50
|
+
catch (err) {
|
|
51
|
+
setError(`Failed to generate mock data: ${err.message}`);
|
|
52
|
+
console.error(err);
|
|
53
|
+
}
|
|
54
|
+
finally {
|
|
55
|
+
setLoading(false);
|
|
56
|
+
}
|
|
57
|
+
};
|
|
58
|
+
const sendWebhook = async () => {
|
|
59
|
+
try {
|
|
60
|
+
setLoading(true);
|
|
61
|
+
setError(null);
|
|
62
|
+
setResponse(null);
|
|
63
|
+
// Start timing
|
|
64
|
+
const startTime = performance.now();
|
|
65
|
+
// Parse and validate JSON if body is provided
|
|
66
|
+
let payload = {};
|
|
67
|
+
if (webhookData.trim()) {
|
|
68
|
+
try {
|
|
69
|
+
payload = JSON.parse(webhookData);
|
|
70
|
+
}
|
|
71
|
+
catch (e) {
|
|
72
|
+
const executionTime = Math.round(performance.now() - startTime);
|
|
73
|
+
setResponse({
|
|
74
|
+
result: null,
|
|
75
|
+
input: webhookData,
|
|
76
|
+
executionTime,
|
|
77
|
+
error: {
|
|
78
|
+
message: 'Invalid JSON in request body',
|
|
79
|
+
stack: String(e)
|
|
80
|
+
}
|
|
81
|
+
});
|
|
82
|
+
setLoading(false);
|
|
83
|
+
return;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
// Send to webhook endpoint using URL from API (includes auto-generated GUID)
|
|
87
|
+
const fetchResponse = await fetch(webhookUrl, {
|
|
88
|
+
method,
|
|
89
|
+
headers: { 'Content-Type': 'application/json' },
|
|
90
|
+
body: (method !== 'GET' && method !== 'HEAD') ? JSON.stringify(payload) : undefined
|
|
91
|
+
});
|
|
92
|
+
// Capture response status and headers
|
|
93
|
+
const status = fetchResponse.status;
|
|
94
|
+
const statusText = fetchResponse.statusText;
|
|
95
|
+
const responseHeaders = [];
|
|
96
|
+
fetchResponse.headers.forEach((value, key) => {
|
|
97
|
+
responseHeaders.push([key, value]);
|
|
98
|
+
});
|
|
99
|
+
// Read response as text first, then try to parse as JSON
|
|
100
|
+
const responseText = await fetchResponse.text();
|
|
101
|
+
let responseData;
|
|
102
|
+
try {
|
|
103
|
+
responseData = JSON.parse(responseText);
|
|
104
|
+
}
|
|
105
|
+
catch (e) {
|
|
106
|
+
responseData = responseText;
|
|
107
|
+
}
|
|
108
|
+
// Calculate execution time
|
|
109
|
+
const executionTime = Math.round(performance.now() - startTime);
|
|
110
|
+
// Create response object
|
|
111
|
+
const executionResponse = {
|
|
112
|
+
result: responseData,
|
|
113
|
+
input: (method === 'GET' || method === 'HEAD') ? null : payload,
|
|
114
|
+
executionTime,
|
|
115
|
+
status,
|
|
116
|
+
statusText,
|
|
117
|
+
headers: responseHeaders
|
|
118
|
+
};
|
|
119
|
+
setResponse(executionResponse);
|
|
120
|
+
}
|
|
121
|
+
catch (err) {
|
|
122
|
+
const executionTime = Math.round(performance.now() - Date.now());
|
|
123
|
+
setResponse({
|
|
124
|
+
result: null,
|
|
125
|
+
input: (method === 'GET' || method === 'HEAD') ? null : webhookData,
|
|
126
|
+
executionTime,
|
|
127
|
+
error: {
|
|
128
|
+
message: err.message || 'Unknown error',
|
|
129
|
+
stack: err.stack
|
|
130
|
+
}
|
|
131
|
+
});
|
|
132
|
+
}
|
|
133
|
+
finally {
|
|
134
|
+
setLoading(false);
|
|
135
|
+
}
|
|
136
|
+
};
|
|
137
|
+
const addKeyValuePair = (type) => {
|
|
138
|
+
if (type === 'params') {
|
|
139
|
+
setParams([...params, { key: '', value: '', enabled: true }]);
|
|
140
|
+
}
|
|
141
|
+
else {
|
|
142
|
+
setHeaders([...headers, { key: '', value: '', enabled: true }]);
|
|
143
|
+
}
|
|
144
|
+
};
|
|
145
|
+
const updateKeyValuePair = (type, index, field, value) => {
|
|
146
|
+
if (type === 'params') {
|
|
147
|
+
const newParams = [...params];
|
|
148
|
+
newParams[index] = { ...newParams[index], [field]: value };
|
|
149
|
+
setParams(newParams);
|
|
150
|
+
}
|
|
151
|
+
else {
|
|
152
|
+
const newHeaders = [...headers];
|
|
153
|
+
newHeaders[index] = { ...newHeaders[index], [field]: value };
|
|
154
|
+
setHeaders(newHeaders);
|
|
155
|
+
}
|
|
156
|
+
};
|
|
157
|
+
const removeKeyValuePair = (type, index) => {
|
|
158
|
+
if (type === 'params') {
|
|
159
|
+
setParams(params.filter((_, i) => i !== index));
|
|
160
|
+
}
|
|
161
|
+
else {
|
|
162
|
+
setHeaders(headers.filter((_, i) => i !== index));
|
|
163
|
+
}
|
|
164
|
+
};
|
|
165
|
+
return ((0, jsx_runtime_1.jsxs)("div", { className: "webhook-editor", children: [(0, jsx_runtime_1.jsxs)("div", { className: "request-section", children: [(0, jsx_runtime_1.jsxs)("div", { className: "url-bar", children: [(0, jsx_runtime_1.jsxs)("select", { className: "http-method-select", value: method, onChange: (e) => setMethod(e.target.value), children: [(0, jsx_runtime_1.jsx)("option", { value: "GET", children: "GET" }), (0, jsx_runtime_1.jsx)("option", { value: "POST", children: "POST" }), (0, jsx_runtime_1.jsx)("option", { value: "PUT", children: "PUT" }), (0, jsx_runtime_1.jsx)("option", { value: "DELETE", children: "DELETE" }), (0, jsx_runtime_1.jsx)("option", { value: "PATCH", children: "PATCH" })] }), (0, jsx_runtime_1.jsx)("input", { type: "text", className: "url-input", value: webhookUrl, readOnly: true, placeholder: "Webhook URL" }), (0, jsx_runtime_1.jsx)("button", { className: "send-button", onClick: sendWebhook, disabled: loading, children: loading ? 'Sending...' : 'Send' })] }), (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.jsxs)("div", { className: "tab-content", children: [activeTab === 'params' && ((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" })] }), params.map((param, index) => ((0, jsx_runtime_1.jsxs)("div", { className: "key-value-row", children: [(0, jsx_runtime_1.jsx)("input", { type: "checkbox", checked: param.enabled, onChange: (e) => updateKeyValuePair('params', index, 'enabled', e.target.checked) }), (0, jsx_runtime_1.jsx)("input", { type: "text", value: param.key, onChange: (e) => updateKeyValuePair('params', index, 'key', e.target.value), placeholder: "Key" }), (0, jsx_runtime_1.jsx)("input", { type: "text", value: param.value, onChange: (e) => updateKeyValuePair('params', index, 'value', e.target.value), placeholder: "Value" }), (0, jsx_runtime_1.jsx)("button", { className: "remove-btn", onClick: () => removeKeyValuePair('params', index), children: "\u00D7" })] }, index))), (0, jsx_runtime_1.jsx)("button", { className: "add-btn", onClick: () => addKeyValuePair('params'), children: "Add Parameter" })] })), activeTab === 'headers' && ((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" })] }), headers.map((header, index) => ((0, jsx_runtime_1.jsxs)("div", { className: "key-value-row", children: [(0, jsx_runtime_1.jsx)("input", { type: "checkbox", checked: header.enabled, onChange: (e) => updateKeyValuePair('headers', index, 'enabled', e.target.checked) }), (0, jsx_runtime_1.jsx)("input", { type: "text", value: header.key, onChange: (e) => updateKeyValuePair('headers', index, 'key', e.target.value), placeholder: "Key" }), (0, jsx_runtime_1.jsx)("input", { type: "text", value: header.value, onChange: (e) => updateKeyValuePair('headers', index, 'value', e.target.value), placeholder: "Value" }), (0, jsx_runtime_1.jsx)("button", { className: "remove-btn", onClick: () => removeKeyValuePair('headers', index), children: "\u00D7" })] }, index))), (0, jsx_runtime_1.jsx)("button", { className: "add-btn", onClick: () => addKeyValuePair('headers'), children: "Add Header" })] })), activeTab === 'body' && ((0, jsx_runtime_1.jsxs)("div", { className: "body-editor", children: [(0, jsx_runtime_1.jsx)("div", { className: "body-actions", children: (0, jsx_runtime_1.jsx)("button", { className: "action-button secondary", onClick: generateMockData, disabled: loading, children: "Generate Mock Data (from Schema)" }) }), (0, jsx_runtime_1.jsx)("textarea", { className: "body-textarea", value: webhookData, onChange: (e) => setWebhookData(e.target.value), placeholder: "Enter JSON request body..." }), (0, jsx_runtime_1.jsx)("div", { className: "body-note", children: "Note: Data sent to the source does not need to follow the schema. Only data emitted from the source must follow the schema." })] }))] })] })] }), (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" }), response && ((0, jsx_runtime_1.jsxs)("div", { className: "response-meta", children: [(0, jsx_runtime_1.jsxs)("span", { className: "execution-time", children: [response.executionTime, "ms"] }), response.status && ((0, jsx_runtime_1.jsxs)("span", { className: `http-status status-${Math.floor(response.status / 100)}xx`, children: [response.status, " ", response.statusText] }))] }))] }), response ? ((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 ${responseTab === 'body' ? 'active' : ''}`, onClick: () => setResponseTab('body'), children: "Body" }), (0, jsx_runtime_1.jsx)("button", { className: `tab-header ${responseTab === 'headers' ? 'active' : ''}`, onClick: () => setResponseTab('headers'), children: "Headers" })] }), (0, jsx_runtime_1.jsxs)("div", { className: "tab-content", children: [responseTab === 'body' && ((0, jsx_runtime_1.jsx)("div", { className: "response-data", children: response.error ? ((0, jsx_runtime_1.jsxs)("div", { className: "response-error", children: [(0, jsx_runtime_1.jsx)("h5", { children: "Execution 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' ? response.result : JSON.stringify(response.result, null, 2) }) })) })), responseTab === 'headers' && ((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" }) })) }))] })] })) : ((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" }) }) }))] }), error && ((0, jsx_runtime_1.jsx)("div", { className: "toast-notification toast-error", children: (0, jsx_runtime_1.jsxs)("div", { className: "toast-content", children: [(0, jsx_runtime_1.jsx)("strong", { children: "Error" }), (0, jsx_runtime_1.jsx)("div", { className: "toast-message", children: error })] }) }))] }));
|
|
166
|
+
};
|
|
167
|
+
exports.SourceWebhookEditor = SourceWebhookEditor;
|
|
168
|
+
//# sourceMappingURL=SourceWebhookEditor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SourceWebhookEditor.js","sourceRoot":"","sources":["../../../../src/ui/components/SourceWebhookEditor.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
interface BuildStatus {
|
|
3
|
+
buildInProgress: boolean;
|
|
4
|
+
lastBuildSuccess: boolean | null;
|
|
5
|
+
lastBuildTimestamp: string | null;
|
|
6
|
+
lastBuildError: string | null;
|
|
7
|
+
}
|
|
8
|
+
interface SourcesViewProps {
|
|
9
|
+
apiBaseUrl: string;
|
|
10
|
+
appInstalled: boolean;
|
|
11
|
+
buildStatus?: BuildStatus | null;
|
|
12
|
+
}
|
|
13
|
+
export declare const SourcesView: React.FC<SourcesViewProps>;
|
|
14
|
+
export {};
|