@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.
Files changed (119) hide show
  1. package/dist/package.json +2 -1
  2. package/dist/public/bundle.7a5338c67e783e9b42f7.js +3 -0
  3. package/dist/public/{bundle.932ab47a0dbf0319bc8b.js.LICENSE.txt → bundle.7a5338c67e783e9b42f7.js.LICENSE.txt} +33 -0
  4. package/dist/public/bundle.7a5338c67e783e9b42f7.js.map +1 -0
  5. package/dist/public/index.html +1 -1
  6. package/dist/src/executor/DestinationExecutor.js +10 -7
  7. package/dist/src/executor/DestinationExecutor.js.map +1 -1
  8. package/dist/src/executor/FunctionExecutor.js +1 -1
  9. package/dist/src/executor/FunctionExecutor.js.map +1 -1
  10. package/dist/src/executor/JobExecutor.js +1 -1
  11. package/dist/src/executor/JobExecutor.js.map +1 -1
  12. package/dist/src/executor/LifecycleExecutor.js +1 -1
  13. package/dist/src/executor/LifecycleExecutor.js.map +1 -1
  14. package/dist/src/executor/SourceExecutor.d.ts +32 -0
  15. package/dist/src/executor/SourceExecutor.js +161 -0
  16. package/dist/src/executor/SourceExecutor.js.map +1 -0
  17. package/dist/src/local_engine/LocalJobApi.d.ts +38 -0
  18. package/dist/src/local_engine/LocalJobApi.js +180 -0
  19. package/dist/src/local_engine/LocalJobApi.js.map +1 -0
  20. package/dist/src/local_engine/local-engine-child-base.d.ts +16 -0
  21. package/dist/src/local_engine/local-engine-child-base.js +201 -14
  22. package/dist/src/local_engine/local-engine-child-base.js.map +1 -1
  23. package/dist/src/local_engine/local-engine-client.d.ts +70 -1
  24. package/dist/src/local_engine/local-engine-client.js +545 -26
  25. package/dist/src/local_engine/local-engine-client.js.map +1 -1
  26. package/dist/src/local_engine/local-engine-types.d.ts +98 -2
  27. package/dist/src/local_engine/local-engine-unified.d.ts +18 -0
  28. package/dist/src/local_engine/local-engine-unified.js +227 -1
  29. package/dist/src/local_engine/local-engine-unified.js.map +1 -1
  30. package/dist/src/local_engine/local-engine-utils.js +34 -7
  31. package/dist/src/local_engine/local-engine-utils.js.map +1 -1
  32. package/dist/src/local_engine/localSDKConfig.js +237 -39
  33. package/dist/src/local_engine/localSDKConfig.js.map +1 -1
  34. package/dist/src/local_engine/storage/LocalConfigStore.d.ts +18 -0
  35. package/dist/src/local_engine/storage/LocalConfigStore.js +52 -3
  36. package/dist/src/local_engine/storage/LocalConfigStore.js.map +1 -1
  37. package/dist/src/local_engine/storage/LocalJobStore.d.ts +1 -0
  38. package/dist/src/local_engine/storage/LocalJobStore.js +12 -2
  39. package/dist/src/local_engine/storage/LocalJobStore.js.map +1 -1
  40. package/dist/src/local_engine/storage/LocalKVStore.d.ts +1 -0
  41. package/dist/src/local_engine/storage/LocalKVStore.js +134 -75
  42. package/dist/src/local_engine/storage/LocalKVStore.js.map +1 -1
  43. package/dist/src/local_engine/storage/LocalNotificationStore.d.ts +1 -0
  44. package/dist/src/local_engine/storage/LocalNotificationStore.js +17 -3
  45. package/dist/src/local_engine/storage/LocalNotificationStore.js.map +1 -1
  46. package/dist/src/local_engine/storage/LocalSecretsStore.d.ts +1 -0
  47. package/dist/src/local_engine/storage/LocalSecretsStore.js +37 -6
  48. package/dist/src/local_engine/storage/LocalSecretsStore.js.map +1 -1
  49. package/dist/src/local_engine/storage/LocalSettingsStore.d.ts +1 -0
  50. package/dist/src/local_engine/storage/LocalSettingsStore.js +61 -11
  51. package/dist/src/local_engine/storage/LocalSettingsStore.js.map +1 -1
  52. package/dist/src/local_engine/storage/SourceDataStore.d.ts +23 -0
  53. package/dist/src/local_engine/storage/SourceDataStore.js +83 -0
  54. package/dist/src/local_engine/storage/SourceDataStore.js.map +1 -0
  55. package/dist/src/local_engine/storage/SourceJobExecutionStore.d.ts +25 -0
  56. package/dist/src/local_engine/storage/SourceJobExecutionStore.js +61 -0
  57. package/dist/src/local_engine/storage/SourceJobExecutionStore.js.map +1 -0
  58. package/dist/src/local_engine/utils.js +20 -4
  59. package/dist/src/local_engine/utils.js.map +1 -1
  60. package/dist/src/logging/LogManager.d.ts +191 -34
  61. package/dist/src/logging/LogManager.js +209 -103
  62. package/dist/src/logging/LogManager.js.map +1 -1
  63. package/dist/src/server/api/destinations.js +30 -6
  64. package/dist/src/server/api/destinations.js.map +1 -1
  65. package/dist/src/server/api/jobs.js +3 -0
  66. package/dist/src/server/api/jobs.js.map +1 -1
  67. package/dist/src/server/api/sources.d.ts +7 -0
  68. package/dist/src/server/api/sources.js +380 -0
  69. package/dist/src/server/api/sources.js.map +1 -0
  70. package/dist/src/server/api.js +64 -3
  71. package/dist/src/server/api.js.map +1 -1
  72. package/dist/src/server.js +203 -19
  73. package/dist/src/server.js.map +1 -1
  74. package/dist/src/ui/components/App.js +165 -21
  75. package/dist/src/ui/components/App.js.map +1 -1
  76. package/dist/src/ui/components/DestinationsView.d.ts +8 -0
  77. package/dist/src/ui/components/DestinationsView.js +30 -9
  78. package/dist/src/ui/components/DestinationsView.js.map +1 -1
  79. package/dist/src/ui/components/FunctionsView.d.ts +7 -0
  80. package/dist/src/ui/components/FunctionsView.js +69 -9
  81. package/dist/src/ui/components/FunctionsView.js.map +1 -1
  82. package/dist/src/ui/components/JobsView.d.ts +7 -0
  83. package/dist/src/ui/components/JobsView.js +55 -15
  84. package/dist/src/ui/components/JobsView.js.map +1 -1
  85. package/dist/src/ui/components/SourceDataViewer.d.ts +8 -0
  86. package/dist/src/ui/components/SourceDataViewer.js +84 -0
  87. package/dist/src/ui/components/SourceDataViewer.js.map +1 -0
  88. package/dist/src/ui/components/SourceJobsSection.d.ts +8 -0
  89. package/dist/src/ui/components/SourceJobsSection.js +99 -0
  90. package/dist/src/ui/components/SourceJobsSection.js.map +1 -0
  91. package/dist/src/ui/components/SourceLifecycleSection.d.ts +7 -0
  92. package/dist/src/ui/components/SourceLifecycleSection.js +58 -0
  93. package/dist/src/ui/components/SourceLifecycleSection.js.map +1 -0
  94. package/dist/src/ui/components/SourceSchemaViewer.d.ts +7 -0
  95. package/dist/src/ui/components/SourceSchemaViewer.js +65 -0
  96. package/dist/src/ui/components/SourceSchemaViewer.js.map +1 -0
  97. package/dist/src/ui/components/SourceWebhookEditor.d.ts +8 -0
  98. package/dist/src/ui/components/SourceWebhookEditor.js +168 -0
  99. package/dist/src/ui/components/SourceWebhookEditor.js.map +1 -0
  100. package/dist/src/ui/components/SourcesView.d.ts +14 -0
  101. package/dist/src/ui/components/SourcesView.js +74 -0
  102. package/dist/src/ui/components/SourcesView.js.map +1 -0
  103. package/dist/src/ui/components/TabbedConsole.d.ts +3 -1
  104. package/dist/src/ui/components/TabbedConsole.js +81 -11
  105. package/dist/src/ui/components/TabbedConsole.js.map +1 -1
  106. package/dist/src/ui/hooks/useEntityNavigation.d.ts +72 -0
  107. package/dist/src/ui/hooks/useEntityNavigation.js +150 -0
  108. package/dist/src/ui/hooks/useEntityNavigation.js.map +1 -0
  109. package/dist/src/ui/hooks/useQueryParams.d.ts +6 -0
  110. package/dist/src/ui/hooks/useQueryParams.js +39 -0
  111. package/dist/src/ui/hooks/useQueryParams.js.map +1 -0
  112. package/dist/src/ui/index.js +3 -2
  113. package/dist/src/ui/index.js.map +1 -1
  114. package/package.json +2 -1
  115. package/dist/public/bundle.932ab47a0dbf0319bc8b.js +0 -3
  116. package/dist/public/bundle.932ab47a0dbf0319bc8b.js.map +0 -1
  117. package/dist/src/server/api/lifecycle.d.ts +0 -6
  118. package/dist/src/server/api/lifecycle.js +0 -72
  119. 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,7 @@
1
+ import React from 'react';
2
+ interface SourceLifecycleSectionProps {
3
+ sourceId: string;
4
+ apiBaseUrl: string;
5
+ }
6
+ export declare const SourceLifecycleSection: React.FC<SourceLifecycleSectionProps>;
7
+ export {};
@@ -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,7 @@
1
+ import React from 'react';
2
+ interface SourceSchemaViewerProps {
3
+ sourceId: string;
4
+ apiBaseUrl: string;
5
+ }
6
+ export declare const SourceSchemaViewer: React.FC<SourceSchemaViewerProps>;
7
+ export {};
@@ -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":"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"}
@@ -0,0 +1,8 @@
1
+ import React from 'react';
2
+ interface SourceWebhookEditorProps {
3
+ sourceId: string;
4
+ apiBaseUrl: string;
5
+ webhookUrl: string;
6
+ }
7
+ export declare const SourceWebhookEditor: React.FC<SourceWebhookEditorProps>;
8
+ export {};
@@ -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 {};