@optimizely/ocp-local-env 1.0.0-beta.10
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/README.md +51 -0
- package/dist/package.json +112 -0
- package/dist/public/bundle.82dc5d29fffb9f205051.js +3 -0
- package/dist/public/bundle.82dc5d29fffb9f205051.js.LICENSE.txt +92 -0
- package/dist/public/bundle.82dc5d29fffb9f205051.js.map +1 -0
- package/dist/public/index.html +1 -0
- package/dist/src/cli.d.ts +2 -0
- package/dist/src/cli.js +115 -0
- package/dist/src/cli.js.map +1 -0
- package/dist/src/executor/DestinationExecutor.d.ts +19 -0
- package/dist/src/executor/DestinationExecutor.js +72 -0
- package/dist/src/executor/DestinationExecutor.js.map +1 -0
- package/dist/src/executor/FunctionExecutor.d.ts +67 -0
- package/dist/src/executor/FunctionExecutor.js +189 -0
- package/dist/src/executor/FunctionExecutor.js.map +1 -0
- package/dist/src/executor/JobExecutor.d.ts +79 -0
- package/dist/src/executor/JobExecutor.js +215 -0
- package/dist/src/executor/JobExecutor.js.map +1 -0
- package/dist/src/executor/LifecycleExecutor.d.ts +64 -0
- package/dist/src/executor/LifecycleExecutor.js +167 -0
- package/dist/src/executor/LifecycleExecutor.js.map +1 -0
- package/dist/src/executor/SourceExecutor.d.ts +32 -0
- package/dist/src/executor/SourceExecutor.js +163 -0
- package/dist/src/executor/SourceExecutor.js.map +1 -0
- package/dist/src/executor/watcher.d.ts +62 -0
- package/dist/src/executor/watcher.js +213 -0
- package/dist/src/executor/watcher.js.map +1 -0
- package/dist/src/functions/hello.d.ts +4 -0
- package/dist/src/functions/hello.js +8 -0
- package/dist/src/functions/hello.js.map +1 -0
- package/dist/src/index.d.ts +1 -0
- package/dist/src/index.js +9 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/jobs/dailyJob.d.ts +4 -0
- package/dist/src/jobs/dailyJob.js +8 -0
- package/dist/src/jobs/dailyJob.js.map +1 -0
- package/dist/src/local_engine/LocalFunctionApi.d.ts +17 -0
- package/dist/src/local_engine/LocalFunctionApi.js +54 -0
- package/dist/src/local_engine/LocalFunctionApi.js.map +1 -0
- package/dist/src/local_engine/LocalJobApi.d.ts +67 -0
- package/dist/src/local_engine/LocalJobApi.js +205 -0
- package/dist/src/local_engine/LocalJobApi.js.map +1 -0
- package/dist/src/local_engine/LocalNotifier.d.ts +9 -0
- package/dist/src/local_engine/LocalNotifier.js +26 -0
- package/dist/src/local_engine/LocalNotifier.js.map +1 -0
- package/dist/src/local_engine/local-engine-child-base.d.ts +110 -0
- package/dist/src/local_engine/local-engine-child-base.js +607 -0
- package/dist/src/local_engine/local-engine-child-base.js.map +1 -0
- package/dist/src/local_engine/local-engine-client.d.ts +161 -0
- package/dist/src/local_engine/local-engine-client.js +888 -0
- package/dist/src/local_engine/local-engine-client.js.map +1 -0
- package/dist/src/local_engine/local-engine-types.d.ts +245 -0
- package/dist/src/local_engine/local-engine-types.js +6 -0
- package/dist/src/local_engine/local-engine-types.js.map +1 -0
- package/dist/src/local_engine/local-engine-unified.d.ts +71 -0
- package/dist/src/local_engine/local-engine-unified.js +723 -0
- package/dist/src/local_engine/local-engine-unified.js.map +1 -0
- package/dist/src/local_engine/local-engine-utils.d.ts +68 -0
- package/dist/src/local_engine/local-engine-utils.js +219 -0
- package/dist/src/local_engine/local-engine-utils.js.map +1 -0
- package/dist/src/local_engine/localSDKConfig.d.ts +40 -0
- package/dist/src/local_engine/localSDKConfig.js +247 -0
- package/dist/src/local_engine/localSDKConfig.js.map +1 -0
- package/dist/src/local_engine/storage/BaseKVStoreWrapper.d.ts +37 -0
- package/dist/src/local_engine/storage/BaseKVStoreWrapper.js +110 -0
- package/dist/src/local_engine/storage/BaseKVStoreWrapper.js.map +1 -0
- package/dist/src/local_engine/storage/LocalConfigStore.d.ts +74 -0
- package/dist/src/local_engine/storage/LocalConfigStore.js +178 -0
- package/dist/src/local_engine/storage/LocalConfigStore.js.map +1 -0
- package/dist/src/local_engine/storage/LocalJobStore.d.ts +111 -0
- package/dist/src/local_engine/storage/LocalJobStore.js +249 -0
- package/dist/src/local_engine/storage/LocalJobStore.js.map +1 -0
- package/dist/src/local_engine/storage/LocalKVStore.d.ts +106 -0
- package/dist/src/local_engine/storage/LocalKVStore.js +1061 -0
- package/dist/src/local_engine/storage/LocalKVStore.js.map +1 -0
- package/dist/src/local_engine/storage/LocalNotificationStore.d.ts +28 -0
- package/dist/src/local_engine/storage/LocalNotificationStore.js +149 -0
- package/dist/src/local_engine/storage/LocalNotificationStore.js.map +1 -0
- package/dist/src/local_engine/storage/LocalSecretsStore.d.ts +115 -0
- package/dist/src/local_engine/storage/LocalSecretsStore.js +350 -0
- package/dist/src/local_engine/storage/LocalSecretsStore.js.map +1 -0
- package/dist/src/local_engine/storage/LocalSecretsStoreWrapper.d.ts +19 -0
- package/dist/src/local_engine/storage/LocalSecretsStoreWrapper.js +52 -0
- package/dist/src/local_engine/storage/LocalSecretsStoreWrapper.js.map +1 -0
- package/dist/src/local_engine/storage/LocalSettingsStore.d.ts +168 -0
- package/dist/src/local_engine/storage/LocalSettingsStore.js +509 -0
- package/dist/src/local_engine/storage/LocalSettingsStore.js.map +1 -0
- package/dist/src/local_engine/storage/LocalSettingsStoreWrapper.d.ts +15 -0
- package/dist/src/local_engine/storage/LocalSettingsStoreWrapper.js +28 -0
- package/dist/src/local_engine/storage/LocalSettingsStoreWrapper.js.map +1 -0
- package/dist/src/local_engine/storage/NumberSet.d.ts +21 -0
- package/dist/src/local_engine/storage/NumberSet.js +32 -0
- package/dist/src/local_engine/storage/NumberSet.js.map +1 -0
- 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/storage/StringSet.d.ts +21 -0
- package/dist/src/local_engine/storage/StringSet.js +32 -0
- package/dist/src/local_engine/storage/StringSet.js.map +1 -0
- package/dist/src/local_engine/types.d.ts +53 -0
- package/dist/src/local_engine/types.js +6 -0
- package/dist/src/local_engine/types.js.map +1 -0
- package/dist/src/local_engine/utils.d.ts +33 -0
- package/dist/src/local_engine/utils.js +143 -0
- package/dist/src/local_engine/utils.js.map +1 -0
- package/dist/src/logging/LogManager.d.ts +246 -0
- package/dist/src/logging/LogManager.js +343 -0
- package/dist/src/logging/LogManager.js.map +1 -0
- package/dist/src/server/api/destinations.d.ts +7 -0
- package/dist/src/server/api/destinations.js +170 -0
- package/dist/src/server/api/destinations.js.map +1 -0
- package/dist/src/server/api/functions.d.ts +7 -0
- package/dist/src/server/api/functions.js +80 -0
- package/dist/src/server/api/functions.js.map +1 -0
- package/dist/src/server/api/jobs.d.ts +10 -0
- package/dist/src/server/api/jobs.js +244 -0
- package/dist/src/server/api/jobs.js.map +1 -0
- package/dist/src/server/api/settings.d.ts +6 -0
- package/dist/src/server/api/settings.js +116 -0
- package/dist/src/server/api/settings.js.map +1 -0
- package/dist/src/server/api/sources.d.ts +7 -0
- package/dist/src/server/api/sources.js +382 -0
- package/dist/src/server/api/sources.js.map +1 -0
- package/dist/src/server/api/stores.d.ts +2 -0
- package/dist/src/server/api/stores.js +341 -0
- package/dist/src/server/api/stores.js.map +1 -0
- package/dist/src/server/api/v1.d.ts +10 -0
- package/dist/src/server/api/v1.js +718 -0
- package/dist/src/server/api/v1.js.map +1 -0
- package/dist/src/server/api.d.ts +8 -0
- package/dist/src/server/api.js +217 -0
- package/dist/src/server/api.js.map +1 -0
- package/dist/src/server/app-discovery.d.ts +5 -0
- package/dist/src/server/app-discovery.js +113 -0
- package/dist/src/server/app-discovery.js.map +1 -0
- package/dist/src/server/config.d.ts +26 -0
- package/dist/src/server/config.js +112 -0
- package/dist/src/server/config.js.map +1 -0
- package/dist/src/server/mockDataGenerator.d.ts +1 -0
- package/dist/src/server/mockDataGenerator.js +154 -0
- package/dist/src/server/mockDataGenerator.js.map +1 -0
- package/dist/src/server/websocket.d.ts +0 -0
- package/dist/src/server/websocket.js +2 -0
- package/dist/src/server/websocket.js.map +1 -0
- package/dist/src/server.d.ts +2 -0
- package/dist/src/server.js +735 -0
- package/dist/src/server.js.map +1 -0
- package/dist/src/types/app.d.ts +154 -0
- package/dist/src/types/app.js +24 -0
- package/dist/src/types/app.js.map +1 -0
- package/dist/src/types/kvstore.d.ts +320 -0
- package/dist/src/types/kvstore.js +5 -0
- package/dist/src/types/kvstore.js.map +1 -0
- package/dist/src/ui/components/App.d.ts +6 -0
- package/dist/src/ui/components/App.js +432 -0
- package/dist/src/ui/components/App.js.map +1 -0
- package/dist/src/ui/components/DestinationBatchEditor.d.ts +7 -0
- package/dist/src/ui/components/DestinationBatchEditor.js +160 -0
- package/dist/src/ui/components/DestinationBatchEditor.js.map +1 -0
- package/dist/src/ui/components/DestinationSchemaViewer.d.ts +7 -0
- package/dist/src/ui/components/DestinationSchemaViewer.js +61 -0
- package/dist/src/ui/components/DestinationSchemaViewer.js.map +1 -0
- package/dist/src/ui/components/DestinationsView.d.ts +14 -0
- package/dist/src/ui/components/DestinationsView.js +68 -0
- package/dist/src/ui/components/DestinationsView.js.map +1 -0
- package/dist/src/ui/components/FunctionsView.d.ts +13 -0
- package/dist/src/ui/components/FunctionsView.js +288 -0
- package/dist/src/ui/components/FunctionsView.js.map +1 -0
- package/dist/src/ui/components/JobsView.d.ts +13 -0
- package/dist/src/ui/components/JobsView.js +320 -0
- package/dist/src/ui/components/JobsView.js.map +1 -0
- package/dist/src/ui/components/KVStoreViewer.d.ts +11 -0
- package/dist/src/ui/components/KVStoreViewer.js +168 -0
- package/dist/src/ui/components/KVStoreViewer.js.map +1 -0
- package/dist/src/ui/components/MetadataModal.d.ts +14 -0
- package/dist/src/ui/components/MetadataModal.js +28 -0
- package/dist/src/ui/components/MetadataModal.js.map +1 -0
- package/dist/src/ui/components/MetadataModal.test.d.ts +1 -0
- package/dist/src/ui/components/MetadataModal.test.js +143 -0
- package/dist/src/ui/components/MetadataModal.test.js.map +1 -0
- package/dist/src/ui/components/NotificationViewer.d.ts +16 -0
- package/dist/src/ui/components/NotificationViewer.js +69 -0
- package/dist/src/ui/components/NotificationViewer.js.map +1 -0
- package/dist/src/ui/components/SecretsStoreViewer.d.ts +11 -0
- package/dist/src/ui/components/SecretsStoreViewer.js +179 -0
- package/dist/src/ui/components/SecretsStoreViewer.js.map +1 -0
- package/dist/src/ui/components/SettingsStoreViewer.d.ts +24 -0
- package/dist/src/ui/components/SettingsStoreViewer.js +132 -0
- package/dist/src/ui/components/SettingsStoreViewer.js.map +1 -0
- 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 +181 -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/StoreViewer.d.ts +16 -0
- package/dist/src/ui/components/StoreViewer.js +86 -0
- package/dist/src/ui/components/StoreViewer.js.map +1 -0
- package/dist/src/ui/components/TabbedConsole.d.ts +17 -0
- package/dist/src/ui/components/TabbedConsole.js +163 -0
- package/dist/src/ui/components/TabbedConsole.js.map +1 -0
- package/dist/src/ui/components/common/DataTree.d.ts +15 -0
- package/dist/src/ui/components/common/DataTree.js +95 -0
- package/dist/src/ui/components/common/DataTree.js.map +1 -0
- package/dist/src/ui/components/common/EyeIcon.d.ts +11 -0
- package/dist/src/ui/components/common/EyeIcon.js +11 -0
- package/dist/src/ui/components/common/EyeIcon.js.map +1 -0
- 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.d.ts +1 -0
- package/dist/src/ui/index.js +23 -0
- package/dist/src/ui/index.js.map +1 -0
- package/dist/src/ui/store/formStateSlice.d.ts +54 -0
- package/dist/src/ui/store/formStateSlice.js +94 -0
- package/dist/src/ui/store/formStateSlice.js.map +1 -0
- package/dist/src/ui/store/hooks.d.ts +6 -0
- package/dist/src/ui/store/hooks.js +8 -0
- package/dist/src/ui/store/hooks.js.map +1 -0
- package/dist/src/ui/store/index.d.ts +11 -0
- package/dist/src/ui/store/index.js +107 -0
- package/dist/src/ui/store/index.js.map +1 -0
- package/dist/src/utils/functionEndpoints.d.ts +24 -0
- package/dist/src/utils/functionEndpoints.js +45 -0
- package/dist/src/utils/functionEndpoints.js.map +1 -0
- package/package.json +112 -0
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DestinationBatchEditor = void 0;
|
|
4
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
|
+
const react_1 = require("react");
|
|
6
|
+
const MetadataModal_1 = require("./MetadataModal");
|
|
7
|
+
const hooks_1 = require("../store/hooks");
|
|
8
|
+
const formStateSlice_1 = require("../store/formStateSlice");
|
|
9
|
+
const DestinationBatchEditor = ({ destinationId, apiBaseUrl }) => {
|
|
10
|
+
// Redux state for persisted form data
|
|
11
|
+
const dispatch = (0, hooks_1.useAppDispatch)();
|
|
12
|
+
const destinationFormState = (0, hooks_1.useAppSelector)(state => state.formState.destinations[destinationId] || (0, formStateSlice_1.getDefaultDestinationFormState)());
|
|
13
|
+
// Destructure for convenience
|
|
14
|
+
const { batchJson, attempt, syncId, syncName } = destinationFormState;
|
|
15
|
+
// Helper to update Redux state
|
|
16
|
+
const updateFormState = (updates) => {
|
|
17
|
+
dispatch((0, formStateSlice_1.updateDestinationState)({ id: destinationId, data: updates }));
|
|
18
|
+
};
|
|
19
|
+
// Local ephemeral state (not persisted)
|
|
20
|
+
const [readyResult, setReadyResult] = (0, react_1.useState)(null);
|
|
21
|
+
const [deliverResult, setDeliverResult] = (0, react_1.useState)(null);
|
|
22
|
+
const [loading, setLoading] = (0, react_1.useState)(false);
|
|
23
|
+
const [error, setError] = (0, react_1.useState)(null);
|
|
24
|
+
const [isModalOpen, setIsModalOpen] = (0, react_1.useState)(false);
|
|
25
|
+
// Auto-clear ready result after 10 seconds
|
|
26
|
+
(0, react_1.useEffect)(() => {
|
|
27
|
+
if (readyResult) {
|
|
28
|
+
const timer = setTimeout(() => {
|
|
29
|
+
setReadyResult(null);
|
|
30
|
+
}, 10000);
|
|
31
|
+
return () => clearTimeout(timer);
|
|
32
|
+
}
|
|
33
|
+
}, [readyResult]);
|
|
34
|
+
// Auto-clear deliver result after 10 seconds
|
|
35
|
+
(0, react_1.useEffect)(() => {
|
|
36
|
+
if (deliverResult) {
|
|
37
|
+
const timer = setTimeout(() => {
|
|
38
|
+
setDeliverResult(null);
|
|
39
|
+
}, 10000);
|
|
40
|
+
return () => clearTimeout(timer);
|
|
41
|
+
}
|
|
42
|
+
}, [deliverResult]);
|
|
43
|
+
// Auto-clear error after 10 seconds
|
|
44
|
+
(0, react_1.useEffect)(() => {
|
|
45
|
+
if (error) {
|
|
46
|
+
const timer = setTimeout(() => {
|
|
47
|
+
setError(null);
|
|
48
|
+
}, 10000);
|
|
49
|
+
return () => clearTimeout(timer);
|
|
50
|
+
}
|
|
51
|
+
}, [error]);
|
|
52
|
+
const generateMockBatch = async () => {
|
|
53
|
+
try {
|
|
54
|
+
setLoading(true);
|
|
55
|
+
setError(null);
|
|
56
|
+
const response = await fetch(`${apiBaseUrl}/destinations/${destinationId}/generate-mock`, {
|
|
57
|
+
method: 'POST',
|
|
58
|
+
headers: { 'Content-Type': 'application/json' },
|
|
59
|
+
body: JSON.stringify({ itemCount: 1 })
|
|
60
|
+
});
|
|
61
|
+
if (!response.ok) {
|
|
62
|
+
const errorData = await response.json();
|
|
63
|
+
throw new Error(errorData.error || 'Failed to generate mock batch');
|
|
64
|
+
}
|
|
65
|
+
const data = await response.json();
|
|
66
|
+
updateFormState({
|
|
67
|
+
batchJson: JSON.stringify(data.batch.items, null, 2),
|
|
68
|
+
attempt: data.batch.attempt.toString(),
|
|
69
|
+
syncId: data.batch.sync.id,
|
|
70
|
+
syncName: data.batch.sync.name,
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
catch (err) {
|
|
74
|
+
setError(`Failed to generate mock batch: ${err.message}`);
|
|
75
|
+
console.error(err);
|
|
76
|
+
}
|
|
77
|
+
finally {
|
|
78
|
+
setLoading(false);
|
|
79
|
+
}
|
|
80
|
+
};
|
|
81
|
+
const testReady = async () => {
|
|
82
|
+
try {
|
|
83
|
+
setLoading(true);
|
|
84
|
+
setError(null);
|
|
85
|
+
setReadyResult(null);
|
|
86
|
+
const response = await fetch(`${apiBaseUrl}/destinations/${destinationId}/ready`, {
|
|
87
|
+
method: 'POST',
|
|
88
|
+
headers: { 'Content-Type': 'application/json' }
|
|
89
|
+
});
|
|
90
|
+
if (!response.ok) {
|
|
91
|
+
const errorData = await response.json();
|
|
92
|
+
throw new Error(errorData.error || 'Failed to test ready');
|
|
93
|
+
}
|
|
94
|
+
const data = await response.json();
|
|
95
|
+
setReadyResult(data.result);
|
|
96
|
+
}
|
|
97
|
+
catch (err) {
|
|
98
|
+
setError(`Failed to test ready: ${err.message}`);
|
|
99
|
+
console.error(err);
|
|
100
|
+
}
|
|
101
|
+
finally {
|
|
102
|
+
setLoading(false);
|
|
103
|
+
}
|
|
104
|
+
};
|
|
105
|
+
const deliverBatch = async () => {
|
|
106
|
+
try {
|
|
107
|
+
setLoading(true);
|
|
108
|
+
setError(null);
|
|
109
|
+
setDeliverResult(null);
|
|
110
|
+
// Parse and validate JSON
|
|
111
|
+
let items;
|
|
112
|
+
try {
|
|
113
|
+
items = JSON.parse(batchJson);
|
|
114
|
+
}
|
|
115
|
+
catch (parseError) {
|
|
116
|
+
throw new Error('Invalid JSON in batch editor');
|
|
117
|
+
}
|
|
118
|
+
const batch = {
|
|
119
|
+
items: Array.isArray(items) ? items : [items],
|
|
120
|
+
attempt: parseInt(attempt, 10),
|
|
121
|
+
sync: {
|
|
122
|
+
id: syncId,
|
|
123
|
+
name: syncName
|
|
124
|
+
}
|
|
125
|
+
};
|
|
126
|
+
const response = await fetch(`${apiBaseUrl}/destinations/${destinationId}/deliver`, {
|
|
127
|
+
method: 'POST',
|
|
128
|
+
headers: { 'Content-Type': 'application/json' },
|
|
129
|
+
body: JSON.stringify({ batch })
|
|
130
|
+
});
|
|
131
|
+
if (!response.ok) {
|
|
132
|
+
const errorData = await response.json();
|
|
133
|
+
throw new Error(errorData.error || 'Failed to deliver batch');
|
|
134
|
+
}
|
|
135
|
+
const data = await response.json();
|
|
136
|
+
setDeliverResult(data.result);
|
|
137
|
+
}
|
|
138
|
+
catch (err) {
|
|
139
|
+
setError(`Failed to deliver batch: ${err.message}`);
|
|
140
|
+
console.error(err);
|
|
141
|
+
}
|
|
142
|
+
finally {
|
|
143
|
+
setLoading(false);
|
|
144
|
+
}
|
|
145
|
+
};
|
|
146
|
+
const isValidJson = () => {
|
|
147
|
+
if (!batchJson.trim())
|
|
148
|
+
return false;
|
|
149
|
+
try {
|
|
150
|
+
JSON.parse(batchJson);
|
|
151
|
+
return true;
|
|
152
|
+
}
|
|
153
|
+
catch {
|
|
154
|
+
return false;
|
|
155
|
+
}
|
|
156
|
+
};
|
|
157
|
+
return ((0, jsx_runtime_1.jsxs)("div", { className: "batch-editor", children: [(0, jsx_runtime_1.jsxs)("div", { className: "all-buttons-section", children: [(0, jsx_runtime_1.jsx)("button", { className: "generate-button", onClick: generateMockBatch, disabled: loading, children: "Generate Sample Batch" }), (0, jsx_runtime_1.jsx)("button", { className: "deliver-button primary", onClick: deliverBatch, disabled: loading || !isValidJson(), children: "Deliver Batch" }), (0, jsx_runtime_1.jsx)("div", { className: "button-separator" }), (0, jsx_runtime_1.jsx)("button", { className: "ready-button secondary", onClick: testReady, disabled: loading, children: "Ready" }), (0, jsx_runtime_1.jsx)("button", { className: "settings-icon-button", onClick: () => setIsModalOpen(true), title: "Batch Metadata Settings", children: "\u2699\uFE0F" })] }), (0, jsx_runtime_1.jsxs)("div", { className: "batch-json-editor", children: [(0, jsx_runtime_1.jsx)("label", { children: "Batch Items (JSON):" }), (0, jsx_runtime_1.jsx)("textarea", { value: batchJson, onChange: (e) => updateFormState({ batchJson: e.target.value }), placeholder: "Click 'Generate Sample Batch' or paste JSON array", className: isValidJson() ? 'valid' : batchJson ? 'invalid' : '' }), batchJson && !isValidJson() && ((0, jsx_runtime_1.jsx)("div", { className: "json-error", children: "Invalid JSON syntax" }))] }), 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 })] }) })), readyResult && ((0, jsx_runtime_1.jsx)("div", { className: `toast-notification ${readyResult.ready ? 'toast-success' : 'toast-warning'}`, children: (0, jsx_runtime_1.jsxs)("div", { className: "toast-content", children: [(0, jsx_runtime_1.jsx)("strong", { children: "Ready Check" }), (0, jsx_runtime_1.jsxs)("div", { className: "toast-message", children: [readyResult.ready ? 'Destination is ready' : 'Destination not ready', readyResult.message && (0, jsx_runtime_1.jsx)("div", { children: readyResult.message })] })] }) })), deliverResult && ((0, jsx_runtime_1.jsx)("div", { className: `toast-notification ${deliverResult.success ? 'toast-success' : 'toast-error'}`, children: (0, jsx_runtime_1.jsxs)("div", { className: "toast-content", children: [(0, jsx_runtime_1.jsxs)("strong", { children: ["Delivery ", deliverResult.success ? 'Successful' : 'Failed'] }), (0, jsx_runtime_1.jsxs)("div", { className: "toast-message", children: [deliverResult.failureReason && (0, jsx_runtime_1.jsx)("div", { children: deliverResult.failureReason }), deliverResult.retryable !== undefined && ((0, jsx_runtime_1.jsxs)("div", { className: "toast-detail", children: ["Retryable: ", deliverResult.retryable ? 'Yes' : 'No'] }))] })] }) })), (0, jsx_runtime_1.jsx)(MetadataModal_1.MetadataModal, { isOpen: isModalOpen, onClose: () => setIsModalOpen(false), attempt: attempt, syncId: syncId, syncName: syncName, onAttemptChange: (value) => updateFormState({ attempt: value }), onSyncIdChange: (value) => updateFormState({ syncId: value }), onSyncNameChange: (value) => updateFormState({ syncName: value }) })] }));
|
|
158
|
+
};
|
|
159
|
+
exports.DestinationBatchEditor = DestinationBatchEditor;
|
|
160
|
+
//# sourceMappingURL=DestinationBatchEditor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DestinationBatchEditor.js","sourceRoot":"","sources":["../../../../src/ui/components/DestinationBatchEditor.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DestinationSchemaViewer = void 0;
|
|
4
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
|
+
const react_1 = require("react");
|
|
6
|
+
const DestinationSchemaViewer = ({ destinationId, 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
|
+
}, [destinationId]);
|
|
14
|
+
const fetchSchema = async () => {
|
|
15
|
+
try {
|
|
16
|
+
setLoading(true);
|
|
17
|
+
setError(null);
|
|
18
|
+
const response = await fetch(`${apiBaseUrl}/destinations/${destinationId}/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
|
+
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 }), (0, jsx_runtime_1.jsx)("p", { className: "schema-description", children: schema.description })] }), (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)))] }))] }));
|
|
59
|
+
};
|
|
60
|
+
exports.DestinationSchemaViewer = DestinationSchemaViewer;
|
|
61
|
+
//# sourceMappingURL=DestinationSchemaViewer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DestinationSchemaViewer.js","sourceRoot":"","sources":["../../../../src/ui/components/DestinationSchemaViewer.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 DestinationsViewProps {
|
|
9
|
+
apiBaseUrl: string;
|
|
10
|
+
appInstalled: boolean;
|
|
11
|
+
buildStatus?: BuildStatus | null;
|
|
12
|
+
}
|
|
13
|
+
export declare const DestinationsView: React.FC<DestinationsViewProps>;
|
|
14
|
+
export {};
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DestinationsView = void 0;
|
|
4
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
|
+
const react_1 = require("react");
|
|
6
|
+
const react_router_dom_1 = require("react-router-dom");
|
|
7
|
+
const DestinationSchemaViewer_1 = require("./DestinationSchemaViewer");
|
|
8
|
+
const DestinationBatchEditor_1 = require("./DestinationBatchEditor");
|
|
9
|
+
const useEntityNavigation_1 = require("../hooks/useEntityNavigation");
|
|
10
|
+
const DestinationsView = ({ apiBaseUrl, appInstalled, buildStatus }) => {
|
|
11
|
+
const location = (0, react_router_dom_1.useLocation)();
|
|
12
|
+
const [destinations, setDestinations] = (0, react_1.useState)([]);
|
|
13
|
+
const [loading, setLoading] = (0, react_1.useState)(true);
|
|
14
|
+
const [error, setError] = (0, react_1.useState)(null);
|
|
15
|
+
// Derive selection from URL
|
|
16
|
+
const pathParts = location.pathname.split('/').filter(Boolean);
|
|
17
|
+
const selectedDestination = pathParts.length > 1 ? pathParts[1] : null;
|
|
18
|
+
// Use entity navigation hook for navigation, validation, and auto-selection
|
|
19
|
+
const { navigateToEntity: setSelectedDestinationAndNavigate } = (0, useEntityNavigation_1.useEntityNavigation)({
|
|
20
|
+
basePath: '/destinations',
|
|
21
|
+
entityName: 'destination',
|
|
22
|
+
entities: destinations,
|
|
23
|
+
selectedEntityId: selectedDestination,
|
|
24
|
+
});
|
|
25
|
+
(0, react_1.useEffect)(() => {
|
|
26
|
+
if (appInstalled) {
|
|
27
|
+
fetchDestinations();
|
|
28
|
+
}
|
|
29
|
+
}, [appInstalled]);
|
|
30
|
+
const fetchDestinations = async () => {
|
|
31
|
+
try {
|
|
32
|
+
setLoading(true);
|
|
33
|
+
const response = await fetch(`${apiBaseUrl}/destinations`);
|
|
34
|
+
const data = await response.json();
|
|
35
|
+
setDestinations(data.destinations || []);
|
|
36
|
+
setError(null);
|
|
37
|
+
}
|
|
38
|
+
catch (err) {
|
|
39
|
+
setError(`Failed to load destinations: ${err.message}`);
|
|
40
|
+
}
|
|
41
|
+
finally {
|
|
42
|
+
setLoading(false);
|
|
43
|
+
}
|
|
44
|
+
};
|
|
45
|
+
// Show loading state during initial build or when build is in progress
|
|
46
|
+
if (buildStatus?.buildInProgress || (buildStatus?.lastBuildSuccess === null && buildStatus?.lastBuildTimestamp === null)) {
|
|
47
|
+
return ((0, jsx_runtime_1.jsx)("div", { className: "destinations-not-installed", children: (0, jsx_runtime_1.jsxs)("div", { className: "placeholder-content", children: [(0, jsx_runtime_1.jsx)("h3", { children: "Building App..." }), (0, jsx_runtime_1.jsx)("p", { children: "Please wait while the app is being built." }), (0, jsx_runtime_1.jsx)("div", { className: "spinner" })] }) }));
|
|
48
|
+
}
|
|
49
|
+
// Show error state if build failed
|
|
50
|
+
if (buildStatus?.lastBuildSuccess === false) {
|
|
51
|
+
return ((0, jsx_runtime_1.jsx)("div", { className: "destinations-not-installed", children: (0, jsx_runtime_1.jsxs)("div", { className: "placeholder-content", children: [(0, jsx_runtime_1.jsx)("h3", { children: "Build Failed" }), (0, jsx_runtime_1.jsx)("p", { children: "The app failed to build. Please check the console for errors." }), buildStatus.lastBuildError && ((0, jsx_runtime_1.jsx)("pre", { className: "error-details", children: buildStatus.lastBuildError }))] }) }));
|
|
52
|
+
}
|
|
53
|
+
if (!appInstalled) {
|
|
54
|
+
return ((0, jsx_runtime_1.jsx)("div", { className: "destinations-not-installed", children: (0, jsx_runtime_1.jsxs)("div", { className: "placeholder-content", children: [(0, jsx_runtime_1.jsx)("h3", { children: "Destinations Not Available" }), (0, jsx_runtime_1.jsx)("p", { children: "Install your app first to configure destinations. Destinations will appear here after installation." })] }) }));
|
|
55
|
+
}
|
|
56
|
+
if (loading) {
|
|
57
|
+
return ((0, jsx_runtime_1.jsx)("div", { className: "destinations-view", children: (0, jsx_runtime_1.jsx)("div", { className: "placeholder-content", children: (0, jsx_runtime_1.jsx)("p", { children: "Loading destinations..." }) }) }));
|
|
58
|
+
}
|
|
59
|
+
if (error) {
|
|
60
|
+
return ((0, jsx_runtime_1.jsx)("div", { className: "destinations-view", children: (0, jsx_runtime_1.jsxs)("div", { className: "placeholder-content", children: [(0, jsx_runtime_1.jsx)("h3", { children: "Error" }), (0, jsx_runtime_1.jsx)("p", { children: error })] }) }));
|
|
61
|
+
}
|
|
62
|
+
if (destinations.length === 0) {
|
|
63
|
+
return ((0, jsx_runtime_1.jsx)("div", { className: "destinations-view", children: (0, jsx_runtime_1.jsxs)("div", { className: "placeholder-content", children: [(0, jsx_runtime_1.jsx)("h3", { children: "No Destinations Found" }), (0, jsx_runtime_1.jsx)("p", { children: "No destinations defined in app.yml" })] }) }));
|
|
64
|
+
}
|
|
65
|
+
return ((0, jsx_runtime_1.jsx)("div", { className: "destinations-view", children: (0, jsx_runtime_1.jsxs)("div", { className: "destinations-layout", children: [(0, jsx_runtime_1.jsxs)("div", { className: "destinations-sidebar", children: [(0, jsx_runtime_1.jsx)("div", { className: "destinations-header", children: (0, jsx_runtime_1.jsx)("h4", { children: "Destinations" }) }), (0, jsx_runtime_1.jsx)("div", { className: "destinations-list", children: destinations.map(dest => ((0, jsx_runtime_1.jsxs)("div", { className: `destination-item ${selectedDestination === dest.id ? 'active' : ''}`, onClick: () => setSelectedDestinationAndNavigate(dest.id), children: [(0, jsx_runtime_1.jsx)("div", { className: "destination-name", children: dest.id }), (0, jsx_runtime_1.jsx)("div", { className: "destination-description", children: dest.description })] }, dest.id))) })] }), (0, jsx_runtime_1.jsx)("div", { className: "destinations-content", children: selectedDestination ? ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)("div", { className: "batch-section", children: (0, jsx_runtime_1.jsx)(DestinationBatchEditor_1.DestinationBatchEditor, { destinationId: selectedDestination, apiBaseUrl: apiBaseUrl }) }), (0, jsx_runtime_1.jsx)("div", { className: "schema-section", children: (0, jsx_runtime_1.jsx)(DestinationSchemaViewer_1.DestinationSchemaViewer, { destinationId: selectedDestination, apiBaseUrl: apiBaseUrl }) })] })) : ((0, jsx_runtime_1.jsx)("div", { className: "no-destination-selected", children: (0, jsx_runtime_1.jsxs)("div", { className: "placeholder-content", children: [(0, jsx_runtime_1.jsx)("h3", { children: "Select a Destination" }), (0, jsx_runtime_1.jsx)("p", { children: "Choose a destination from the sidebar to view its schema and test it" })] }) })) })] }) }));
|
|
66
|
+
};
|
|
67
|
+
exports.DestinationsView = DestinationsView;
|
|
68
|
+
//# sourceMappingURL=DestinationsView.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DestinationsView.js","sourceRoot":"","sources":["../../../../src/ui/components/DestinationsView.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
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 FunctionsViewProps {
|
|
9
|
+
appInstalled: boolean;
|
|
10
|
+
buildStatus: BuildStatus | null;
|
|
11
|
+
}
|
|
12
|
+
declare const FunctionsView: React.FC<FunctionsViewProps>;
|
|
13
|
+
export default FunctionsView;
|