windmill-components 1.695.1 → 1.698.0
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/sharedUtils/assets/tokens/colorTokensConfig.d.ts +2 -0
- package/dist/sharedUtils/base.d.ts +1 -0
- package/dist/sharedUtils/cloud.d.ts +1 -0
- package/dist/sharedUtils/common.d.ts +111 -0
- package/dist/sharedUtils/components/apps/components/display/dbtable/queries/count.d.ts +5 -0
- package/dist/sharedUtils/components/apps/components/display/dbtable/queries/delete.d.ts +5 -0
- package/dist/sharedUtils/components/apps/components/display/dbtable/queries/insert.d.ts +5 -0
- package/dist/sharedUtils/components/apps/components/display/dbtable/queries/select.d.ts +13 -0
- package/dist/sharedUtils/components/apps/components/display/dbtable/queries/update.d.ts +11 -0
- package/dist/sharedUtils/components/apps/components/display/dbtable/utils.d.ts +95 -0
- package/dist/sharedUtils/components/apps/editor/appPolicy.d.ts +6 -0
- package/dist/sharedUtils/components/apps/editor/appUtilsCore.d.ts +7 -0
- package/dist/sharedUtils/components/apps/editor/appUtilsS3.d.ts +33 -0
- package/dist/sharedUtils/components/apps/editor/commonAppUtils.d.ts +10 -0
- package/dist/sharedUtils/components/apps/editor/component/components.d.ts +5371 -0
- package/dist/sharedUtils/components/apps/editor/component/default-codes.d.ts +3 -0
- package/dist/sharedUtils/components/apps/editor/component/index.d.ts +3 -0
- package/dist/sharedUtils/components/apps/editor/component/sets.d.ts +7 -0
- package/dist/sharedUtils/components/apps/editor/componentsPanel/componentDefaultProps.d.ts +3 -0
- package/dist/sharedUtils/components/apps/gridUtils.d.ts +14 -0
- package/dist/sharedUtils/components/apps/inputType.d.ts +178 -0
- package/dist/sharedUtils/components/apps/rx.d.ts +29 -0
- package/dist/sharedUtils/components/apps/sharedTypes.d.ts +21 -0
- package/dist/sharedUtils/components/apps/types.d.ts +274 -0
- package/dist/sharedUtils/components/assets/lib.d.ts +25 -0
- package/dist/sharedUtils/components/common/alert/model.d.ts +2 -0
- package/dist/sharedUtils/components/common/badge/model.d.ts +8 -0
- package/dist/sharedUtils/components/common/button/model.d.ts +45 -0
- package/dist/sharedUtils/components/common/fileInput/model.d.ts +1 -0
- package/dist/sharedUtils/components/common/index.d.ts +24 -0
- package/dist/sharedUtils/components/common/skeleton/model.d.ts +21 -0
- package/dist/sharedUtils/components/dbTypes.d.ts +14 -0
- package/dist/sharedUtils/components/diff_drawer.d.ts +26 -0
- package/dist/sharedUtils/components/ducklake.d.ts +1 -0
- package/dist/sharedUtils/components/flows/scheduleUtils.d.ts +7 -0
- package/dist/sharedUtils/components/icons/index.d.ts +101 -0
- package/dist/sharedUtils/components/random_positive_adjetive.d.ts +1 -0
- package/dist/sharedUtils/components/raw_apps/rawAppPolicy.d.ts +10 -0
- package/dist/sharedUtils/components/raw_apps/utils.d.ts +15 -0
- package/dist/sharedUtils/components/triggers/email/utils.d.ts +4 -0
- package/dist/sharedUtils/components/triggers/gcp/utils.d.ts +2 -0
- package/dist/sharedUtils/components/triggers/http/utils.d.ts +11 -0
- package/dist/sharedUtils/components/triggers/kafka/utils.d.ts +2 -0
- package/dist/sharedUtils/components/triggers/mqtt/utils.d.ts +2 -0
- package/dist/sharedUtils/components/triggers/nats/utils.d.ts +2 -0
- package/dist/sharedUtils/components/triggers/postgres/utils.d.ts +8 -0
- package/dist/sharedUtils/components/triggers/sqs/utils.d.ts +2 -0
- package/dist/sharedUtils/components/triggers/triggers.svelte.d.ts +32 -0
- package/dist/sharedUtils/components/triggers/utils.d.ts +80 -0
- package/dist/sharedUtils/components/triggers/websocket/utils.d.ts +2 -0
- package/dist/sharedUtils/components/triggers.d.ts +20 -0
- package/dist/sharedUtils/gen/core/ApiError.d.ts +10 -0
- package/dist/sharedUtils/gen/core/ApiRequestOptions.d.ts +13 -0
- package/dist/sharedUtils/gen/core/ApiResult.d.ts +7 -0
- package/dist/sharedUtils/gen/core/CancelablePromise.d.ts +26 -0
- package/dist/sharedUtils/gen/core/OpenAPI.d.ts +27 -0
- package/dist/sharedUtils/gen/core/request.d.ts +29 -0
- package/dist/sharedUtils/gen/index.d.ts +6 -0
- package/dist/sharedUtils/gen/schemas.gen.d.ts +7036 -0
- package/dist/sharedUtils/gen/services.gen.d.ts +6047 -0
- package/dist/sharedUtils/gen/types.gen.d.ts +21881 -0
- package/dist/sharedUtils/history.svelte.d.ts +9 -0
- package/dist/sharedUtils/hub.d.ts +49 -0
- package/dist/sharedUtils/jsr.json +6 -0
- package/dist/sharedUtils/lib.d.ts +5 -0
- package/dist/sharedUtils/lib.es.js +1588 -0
- package/dist/sharedUtils/package.json +12 -0
- package/dist/sharedUtils/schema.d.ts +3 -0
- package/dist/sharedUtils/stores.d.ts +97 -0
- package/dist/sharedUtils/svelte5Utils.svelte.d.ts +80 -0
- package/dist/sharedUtils/toast.d.ts +8 -0
- package/dist/sharedUtils/utils.d.ts +265 -0
- package/package/components/AppConnectInner.svelte +38 -5
- package/package/components/CompareWorkspaces.svelte +142 -486
- package/package/components/Editor.svelte +5 -4
- package/package/components/Editor.svelte.d.ts +1 -0
- package/package/components/FilterSearchbar.svelte +3 -1
- package/package/components/FilterSearchbar.svelte.d.ts +1 -0
- package/package/components/ForkWorkspaceBanner.svelte +16 -0
- package/package/components/LogViewer.svelte +51 -60
- package/package/components/OnBehalfOfSelector.svelte +10 -7
- package/package/components/ResourceEditor.svelte +198 -311
- package/package/components/ResourceEditor.svelte.d.ts +3 -3
- package/package/components/ResourceEditorDrawer.svelte +17 -6
- package/package/components/ResourceForm.svelte +235 -0
- package/package/components/ResourceForm.svelte.d.ts +25 -0
- package/package/components/RunsPage.svelte +1 -0
- package/package/components/ScriptBuilder.svelte +1 -0
- package/package/components/ScriptEditor.svelte +10 -3
- package/package/components/ScriptEditor.svelte.d.ts +1 -0
- package/package/components/TaggedTextInput.svelte +4 -1
- package/package/components/TaggedTextInput.svelte.d.ts +2 -0
- package/package/components/VariableEditor.svelte +177 -199
- package/package/components/VariableEditor.svelte.d.ts +1 -2
- package/package/components/VariableForm.svelte +133 -0
- package/package/components/VariableForm.svelte.d.ts +22 -0
- package/package/components/WsSpecificVersions.svelte +39 -0
- package/package/components/WsSpecificVersions.svelte.d.ts +9 -0
- package/package/components/apps/components/helpers/RunnableComponent.svelte.d.ts +0 -1
- package/package/components/apps/editor/AppEditorHeaderDeploy.svelte.d.ts +1 -1
- package/package/components/common/table/AppRow.svelte +2 -1
- package/package/components/common/table/AppRow.svelte.d.ts +1 -0
- package/package/components/common/table/FlowRow.svelte +2 -1
- package/package/components/common/table/FlowRow.svelte.d.ts +1 -0
- package/package/components/common/table/RawAppRow.svelte +2 -1
- package/package/components/common/table/RawAppRow.svelte.d.ts +1 -0
- package/package/components/common/table/Row.svelte +11 -3
- package/package/components/common/table/Row.svelte.d.ts +2 -1
- package/package/components/common/table/RowIcon.svelte +18 -2
- package/package/components/common/table/RowIcon.svelte.d.ts +1 -1
- package/package/components/common/table/ScriptRow.svelte +2 -1
- package/package/components/common/table/ScriptRow.svelte.d.ts +1 -0
- package/package/components/copilot/autocomplete/Autocompletor.d.ts +3 -1
- package/package/components/copilot/autocomplete/Autocompletor.js +5 -2
- package/package/components/copilot/autocomplete/request.d.ts +1 -0
- package/package/components/copilot/autocomplete/request.js +1 -1
- package/package/components/copilot/chat/AIChatManager.svelte.js +14 -4
- package/package/components/copilot/chat/AiChatLayout.svelte +2 -0
- package/package/components/copilot/chat/ContextManager.svelte.d.ts +1 -0
- package/package/components/copilot/chat/CreatedResourceActionDrawers.svelte +129 -0
- package/package/components/copilot/chat/CreatedResourceActionDrawers.svelte.d.ts +4 -0
- package/package/components/copilot/chat/ToolExecutionDisplay.svelte +14 -6
- package/package/components/copilot/chat/ToolMessageActions.svelte +73 -0
- package/package/components/copilot/chat/ToolMessageActions.svelte.d.ts +7 -0
- package/package/components/copilot/chat/createdResourceActions.svelte.d.ts +6 -0
- package/package/components/copilot/chat/createdResourceActions.svelte.js +29 -0
- package/package/components/copilot/chat/script/core.d.ts +6 -2
- package/package/components/copilot/chat/script/core.js +13 -7
- package/package/components/copilot/chat/script/wacPrompt.test.d.ts +1 -0
- package/package/components/copilot/chat/script/wacPrompt.test.js +25 -0
- package/package/components/copilot/chat/shared.d.ts +12 -0
- package/package/components/copilot/chat/shared.test.js +23 -2
- package/package/components/copilot/chat/workspaceTools.js +34 -4
- package/package/components/flows/content/ScriptEditorDrawer.svelte +1 -0
- package/package/components/graph/wacToFlow.js +1 -1
- package/package/components/graph/wacToFlow.test.d.ts +1 -0
- package/package/components/graph/wacToFlow.test.js +17 -0
- package/package/components/home/Item.svelte +5 -1
- package/package/components/home/Item.svelte.d.ts +1 -0
- package/package/components/home/ItemsList.svelte +260 -3
- package/package/components/instanceSettings/SecretBackendConfig.svelte +457 -88
- package/package/components/runs/useJobsLoader.svelte.js +5 -11
- package/package/components/sidebar/WorkspaceMenu.svelte +19 -5
- package/package/externalDomain.d.ts +2 -0
- package/package/externalDomain.js +16 -0
- package/package/gen/core/OpenAPI.js +1 -1
- package/package/gen/types.gen.d.ts +0 -112
- package/package/hubPaths.json +2 -2
- package/package/system_prompts/index.d.ts +1 -1
- package/package/system_prompts/index.js +22 -3
- package/package/system_prompts/prompts.d.ts +2 -2
- package/package/system_prompts/prompts.js +6 -3
- package/package/utils_deployable.d.ts +162 -638
- package/package/utils_deployable.js +75 -143
- package/package/utils_workspace_deploy.d.ts +10 -4
- package/package/utils_workspace_deploy.js +167 -42
- package/package.json +7 -3
|
@@ -64,8 +64,13 @@ export async function existsTrigger(data, triggerKind) {
|
|
|
64
64
|
* changes without flipping the target's enabled/disabled state. Schedules'
|
|
65
65
|
* `EditSchedule` already lacks `enabled` on the backend, but stripping keeps
|
|
66
66
|
* the intent explicit and matches the YAML/CLI round-trip behavior.
|
|
67
|
+
*
|
|
68
|
+
* Used by the legacy `kind === 'trigger'` path in `utils_workspace_deploy.ts`
|
|
69
|
+
* (the cross-workspace deploy UI). The merge-UI deploy goes through the
|
|
70
|
+
* shared `deployItem` in `windmill-utils-internal`, which applies its own
|
|
71
|
+
* `stripOperationalStateOnUpdate` at the dispatch layer.
|
|
67
72
|
*/
|
|
68
|
-
function stripOperationalState(payload) {
|
|
73
|
+
export function stripOperationalState(payload) {
|
|
69
74
|
const { mode: _mode, enabled: _enabled, ...rest } = payload;
|
|
70
75
|
return rest;
|
|
71
76
|
}
|
|
@@ -82,7 +87,7 @@ export async function getTriggersDeployData(kind, path, workspace, onBehalfOf) {
|
|
|
82
87
|
});
|
|
83
88
|
return {
|
|
84
89
|
data: {
|
|
85
|
-
...
|
|
90
|
+
...sqsTrigger,
|
|
86
91
|
permissioned_as: onBehalfOf,
|
|
87
92
|
preserve_permissioned_as: preservePermissionedAs
|
|
88
93
|
},
|
|
@@ -97,7 +102,7 @@ export async function getTriggersDeployData(kind, path, workspace, onBehalfOf) {
|
|
|
97
102
|
});
|
|
98
103
|
return {
|
|
99
104
|
data: {
|
|
100
|
-
...
|
|
105
|
+
...kafkaTrigger,
|
|
101
106
|
permissioned_as: onBehalfOf,
|
|
102
107
|
preserve_permissioned_as: preservePermissionedAs
|
|
103
108
|
},
|
|
@@ -112,7 +117,7 @@ export async function getTriggersDeployData(kind, path, workspace, onBehalfOf) {
|
|
|
112
117
|
});
|
|
113
118
|
return {
|
|
114
119
|
data: {
|
|
115
|
-
...
|
|
120
|
+
...mqttTrigger,
|
|
116
121
|
permissioned_as: onBehalfOf,
|
|
117
122
|
preserve_permissioned_as: preservePermissionedAs
|
|
118
123
|
},
|
|
@@ -127,7 +132,7 @@ export async function getTriggersDeployData(kind, path, workspace, onBehalfOf) {
|
|
|
127
132
|
});
|
|
128
133
|
return {
|
|
129
134
|
data: {
|
|
130
|
-
...
|
|
135
|
+
...natsTrigger,
|
|
131
136
|
permissioned_as: onBehalfOf,
|
|
132
137
|
preserve_permissioned_as: preservePermissionedAs
|
|
133
138
|
},
|
|
@@ -146,7 +151,7 @@ export async function getTriggersDeployData(kind, path, workspace, onBehalfOf) {
|
|
|
146
151
|
gcpTrigger.delivery_config.audience = '';
|
|
147
152
|
}
|
|
148
153
|
const data = {
|
|
149
|
-
...
|
|
154
|
+
...gcpTrigger,
|
|
150
155
|
delivery_config: gcpTrigger.delivery_config ?? undefined,
|
|
151
156
|
base_endpoint: gcpTrigger.delivery_type === 'push' ? `${window.location.origin}${base}` : undefined,
|
|
152
157
|
permissioned_as: onBehalfOf,
|
|
@@ -165,7 +170,7 @@ export async function getTriggersDeployData(kind, path, workspace, onBehalfOf) {
|
|
|
165
170
|
});
|
|
166
171
|
return {
|
|
167
172
|
data: {
|
|
168
|
-
...
|
|
173
|
+
...postgresTrigger,
|
|
169
174
|
permissioned_as: onBehalfOf,
|
|
170
175
|
preserve_permissioned_as: preservePermissionedAs
|
|
171
176
|
},
|
|
@@ -180,7 +185,7 @@ export async function getTriggersDeployData(kind, path, workspace, onBehalfOf) {
|
|
|
180
185
|
});
|
|
181
186
|
return {
|
|
182
187
|
data: {
|
|
183
|
-
...
|
|
188
|
+
...websocketTrigger,
|
|
184
189
|
permissioned_as: onBehalfOf,
|
|
185
190
|
preserve_permissioned_as: preservePermissionedAs
|
|
186
191
|
},
|
|
@@ -195,7 +200,7 @@ export async function getTriggersDeployData(kind, path, workspace, onBehalfOf) {
|
|
|
195
200
|
});
|
|
196
201
|
return {
|
|
197
202
|
data: {
|
|
198
|
-
...
|
|
203
|
+
...httpTrigger,
|
|
199
204
|
permissioned_as: onBehalfOf,
|
|
200
205
|
preserve_permissioned_as: preservePermissionedAs
|
|
201
206
|
},
|
|
@@ -210,7 +215,7 @@ export async function getTriggersDeployData(kind, path, workspace, onBehalfOf) {
|
|
|
210
215
|
});
|
|
211
216
|
return {
|
|
212
217
|
data: {
|
|
213
|
-
...
|
|
218
|
+
...azureTrigger,
|
|
214
219
|
permissioned_as: onBehalfOf,
|
|
215
220
|
preserve_permissioned_as: preservePermissionedAs
|
|
216
221
|
},
|
|
@@ -225,7 +230,7 @@ export async function getTriggersDeployData(kind, path, workspace, onBehalfOf) {
|
|
|
225
230
|
});
|
|
226
231
|
return {
|
|
227
232
|
data: {
|
|
228
|
-
...
|
|
233
|
+
...emailTrigger,
|
|
229
234
|
permissioned_as: onBehalfOf,
|
|
230
235
|
preserve_permissioned_as: preservePermissionedAs
|
|
231
236
|
},
|
|
@@ -240,7 +245,7 @@ export async function getTriggersDeployData(kind, path, workspace, onBehalfOf) {
|
|
|
240
245
|
});
|
|
241
246
|
return {
|
|
242
247
|
data: {
|
|
243
|
-
...
|
|
248
|
+
...schedulesTrigger,
|
|
244
249
|
// permissioned_as is only set on create, not update
|
|
245
250
|
permissioned_as: onBehalfOf,
|
|
246
251
|
preserve_permissioned_as: preservePermissionedAs
|
|
@@ -251,156 +256,75 @@ export async function getTriggersDeployData(kind, path, workspace, onBehalfOf) {
|
|
|
251
256
|
}
|
|
252
257
|
throw new Error(`Unexpected trigger kind got: ${kind}`);
|
|
253
258
|
}
|
|
259
|
+
/**
|
|
260
|
+
* Runtime fields stripped from the trigger/schedule diff so the drawer mirrors
|
|
261
|
+
* the backend's `compare_two_trigger_or_schedule` semantics — same set as
|
|
262
|
+
* `TRIGGER_COMPARE_IGNORE` and `stripTriggerOrScheduleRuntimeFields` in the
|
|
263
|
+
* shared deploy module.
|
|
264
|
+
*/
|
|
265
|
+
const TRIGGER_RUNTIME_IGNORE = new Set([
|
|
266
|
+
'workspace_id',
|
|
267
|
+
'edited_by',
|
|
268
|
+
'edited_at',
|
|
269
|
+
'email',
|
|
270
|
+
'error',
|
|
271
|
+
'enabled',
|
|
272
|
+
'mode',
|
|
273
|
+
'server_id',
|
|
274
|
+
'last_server_ping',
|
|
275
|
+
'extra_perms',
|
|
276
|
+
'permissioned_as',
|
|
277
|
+
// Server-managed (kept in sync with backend `TRIGGER_COMPARE_IGNORE`).
|
|
278
|
+
'subscription_id',
|
|
279
|
+
'push_auth_config'
|
|
280
|
+
]);
|
|
281
|
+
function stripTriggerRuntimeFields(row) {
|
|
282
|
+
const out = {};
|
|
283
|
+
for (const [k, v] of Object.entries(row)) {
|
|
284
|
+
if (!TRIGGER_RUNTIME_IGNORE.has(k))
|
|
285
|
+
out[k] = v;
|
|
286
|
+
}
|
|
287
|
+
return out;
|
|
288
|
+
}
|
|
254
289
|
export async function getTriggerValue(kind, path, workspace) {
|
|
290
|
+
let trigger;
|
|
255
291
|
if (kind === 'sqs') {
|
|
256
|
-
|
|
257
|
-
workspace: workspace,
|
|
258
|
-
path: path
|
|
259
|
-
});
|
|
260
|
-
return {
|
|
261
|
-
mode,
|
|
262
|
-
script_path,
|
|
263
|
-
is_flow,
|
|
264
|
-
queue_url,
|
|
265
|
-
aws_resource_path,
|
|
266
|
-
message_attributes
|
|
267
|
-
};
|
|
292
|
+
trigger = await SqsTriggerService.getSqsTrigger({ workspace, path });
|
|
268
293
|
}
|
|
269
294
|
else if (kind === 'kafka') {
|
|
270
|
-
|
|
271
|
-
workspace: workspace,
|
|
272
|
-
path: path
|
|
273
|
-
});
|
|
274
|
-
return {
|
|
275
|
-
mode,
|
|
276
|
-
script_path,
|
|
277
|
-
is_flow,
|
|
278
|
-
kafka_resource_path,
|
|
279
|
-
topics,
|
|
280
|
-
group_id
|
|
281
|
-
};
|
|
295
|
+
trigger = await KafkaTriggerService.getKafkaTrigger({ workspace, path });
|
|
282
296
|
}
|
|
283
297
|
else if (kind === 'mqtt') {
|
|
284
|
-
|
|
285
|
-
workspace: workspace,
|
|
286
|
-
path: path
|
|
287
|
-
});
|
|
288
|
-
return {
|
|
289
|
-
mode,
|
|
290
|
-
script_path,
|
|
291
|
-
is_flow,
|
|
292
|
-
mqtt_resource_path,
|
|
293
|
-
v3_config,
|
|
294
|
-
v5_config,
|
|
295
|
-
client_id,
|
|
296
|
-
subscribe_topics,
|
|
297
|
-
client_version
|
|
298
|
-
};
|
|
298
|
+
trigger = await MqttTriggerService.getMqttTrigger({ workspace, path });
|
|
299
299
|
}
|
|
300
300
|
else if (kind === 'nats') {
|
|
301
|
-
|
|
302
|
-
workspace: workspace,
|
|
303
|
-
path: path
|
|
304
|
-
});
|
|
305
|
-
return {
|
|
306
|
-
mode,
|
|
307
|
-
script_path,
|
|
308
|
-
is_flow,
|
|
309
|
-
nats_resource_path,
|
|
310
|
-
use_jetstream,
|
|
311
|
-
stream_name,
|
|
312
|
-
consumer_name,
|
|
313
|
-
subjects
|
|
314
|
-
};
|
|
301
|
+
trigger = await NatsTriggerService.getNatsTrigger({ workspace, path });
|
|
315
302
|
}
|
|
316
303
|
else if (kind === 'postgres') {
|
|
317
|
-
|
|
318
|
-
workspace: workspace,
|
|
319
|
-
path: path
|
|
320
|
-
});
|
|
321
|
-
return {
|
|
322
|
-
mode,
|
|
323
|
-
script_path,
|
|
324
|
-
is_flow,
|
|
325
|
-
postgres_resource_path,
|
|
326
|
-
replication_slot_name,
|
|
327
|
-
publication_name
|
|
328
|
-
};
|
|
304
|
+
trigger = await PostgresTriggerService.getPostgresTrigger({ workspace, path });
|
|
329
305
|
}
|
|
330
306
|
else if (kind === 'gcp') {
|
|
331
|
-
|
|
332
|
-
workspace: workspace,
|
|
333
|
-
path: path
|
|
334
|
-
});
|
|
335
|
-
return {
|
|
336
|
-
mode,
|
|
337
|
-
script_path,
|
|
338
|
-
is_flow,
|
|
339
|
-
gcp_resource_path
|
|
340
|
-
};
|
|
307
|
+
trigger = await GcpTriggerService.getGcpTrigger({ workspace, path });
|
|
341
308
|
}
|
|
342
309
|
else if (kind === 'websockets') {
|
|
343
|
-
|
|
344
|
-
workspace: workspace,
|
|
345
|
-
path: path
|
|
346
|
-
});
|
|
347
|
-
return {
|
|
348
|
-
mode,
|
|
349
|
-
script_path,
|
|
350
|
-
is_flow,
|
|
351
|
-
url,
|
|
352
|
-
url_runnable_args,
|
|
353
|
-
can_return_message,
|
|
354
|
-
filters,
|
|
355
|
-
initial_messages
|
|
356
|
-
};
|
|
310
|
+
trigger = await WebsocketTriggerService.getWebsocketTrigger({ workspace, path });
|
|
357
311
|
}
|
|
358
312
|
else if (kind === 'routes') {
|
|
359
|
-
|
|
360
|
-
workspace: workspace,
|
|
361
|
-
path: path
|
|
362
|
-
});
|
|
363
|
-
return {
|
|
364
|
-
script_path,
|
|
365
|
-
is_flow,
|
|
366
|
-
http_method,
|
|
367
|
-
route_path,
|
|
368
|
-
static_asset_config,
|
|
369
|
-
request_type,
|
|
370
|
-
authentication_method,
|
|
371
|
-
is_static_website,
|
|
372
|
-
authentication_resource_path
|
|
373
|
-
};
|
|
313
|
+
trigger = await HttpTriggerService.getHttpTrigger({ workspace, path });
|
|
374
314
|
}
|
|
375
315
|
else if (kind === 'schedules') {
|
|
376
|
-
|
|
377
|
-
workspace: workspace,
|
|
378
|
-
path: path
|
|
379
|
-
});
|
|
380
|
-
return {
|
|
381
|
-
script_path,
|
|
382
|
-
is_flow,
|
|
383
|
-
on_failure,
|
|
384
|
-
schedule,
|
|
385
|
-
timezone,
|
|
386
|
-
on_failure_times,
|
|
387
|
-
on_failure_exact,
|
|
388
|
-
on_failure_extra_args,
|
|
389
|
-
on_recovery,
|
|
390
|
-
on_recovery_times,
|
|
391
|
-
on_recovery_extra_args,
|
|
392
|
-
on_success,
|
|
393
|
-
on_success_extra_args,
|
|
394
|
-
ws_error_handler_muted,
|
|
395
|
-
retry,
|
|
396
|
-
summary,
|
|
397
|
-
no_flow_overlap,
|
|
398
|
-
tag,
|
|
399
|
-
paused_until,
|
|
400
|
-
cron_version
|
|
401
|
-
};
|
|
316
|
+
trigger = await ScheduleService.getSchedule({ workspace, path });
|
|
402
317
|
}
|
|
403
|
-
|
|
318
|
+
else if (kind === 'azure') {
|
|
319
|
+
trigger = await AzureTriggerService.getAzureTrigger({ workspace, path });
|
|
320
|
+
}
|
|
321
|
+
else if (kind === 'emails') {
|
|
322
|
+
trigger = await EmailTriggerService.getEmailTrigger({ workspace, path });
|
|
323
|
+
}
|
|
324
|
+
else {
|
|
325
|
+
throw new Error(`Unexpected trigger kind got: ${kind}`);
|
|
326
|
+
}
|
|
327
|
+
return stripTriggerRuntimeFields(trigger);
|
|
404
328
|
}
|
|
405
329
|
/**
|
|
406
330
|
* Get the permissioned_as for a trigger (used for on_behalf_of during deployment).
|
|
@@ -443,6 +367,14 @@ export async function getTriggerPermissionedAs(kind, path, workspace) {
|
|
|
443
367
|
const trigger = await ScheduleService.getSchedule({ workspace, path });
|
|
444
368
|
return trigger.permissioned_as;
|
|
445
369
|
}
|
|
370
|
+
else if (kind === 'azure') {
|
|
371
|
+
const trigger = await AzureTriggerService.getAzureTrigger({ workspace, path });
|
|
372
|
+
return trigger.permissioned_as;
|
|
373
|
+
}
|
|
374
|
+
else if (kind === 'emails') {
|
|
375
|
+
const trigger = await EmailTriggerService.getEmailTrigger({ workspace, path });
|
|
376
|
+
return trigger.permissioned_as;
|
|
377
|
+
}
|
|
446
378
|
}
|
|
447
379
|
catch {
|
|
448
380
|
// Trigger may not exist in the workspace
|
|
@@ -1,11 +1,16 @@
|
|
|
1
1
|
import { type AdditionalInformation, type Kind } from './utils_deployable';
|
|
2
|
-
import { type DeployResult } from 'windmill-utils-internal';
|
|
3
|
-
export type { DeployResult };
|
|
2
|
+
import { type DeployKind, type DeployResult, type TriggerDeployKind } from 'windmill-utils-internal';
|
|
3
|
+
export type { DeployResult, DeployKind, TriggerDeployKind };
|
|
4
4
|
export interface DeployItemParams {
|
|
5
5
|
kind: Kind;
|
|
6
6
|
path: string;
|
|
7
7
|
workspaceFrom: string;
|
|
8
8
|
workspaceTo: string;
|
|
9
|
+
/**
|
|
10
|
+
* Carries the trigger sub-kind for the legacy generic `kind: 'trigger'` path
|
|
11
|
+
* used by `DeployWorkspace.svelte`. Not needed for the new per-kind names
|
|
12
|
+
* (`http_trigger`, `kafka_trigger`, …) returned by the fork-merge compare API.
|
|
13
|
+
*/
|
|
9
14
|
additionalInformation?: AdditionalInformation;
|
|
10
15
|
/**
|
|
11
16
|
* The value to use for on_behalf_of when deploying.
|
|
@@ -18,8 +23,9 @@ export interface DeployItemParams {
|
|
|
18
23
|
onBehalfOf?: string;
|
|
19
24
|
}
|
|
20
25
|
/**
|
|
21
|
-
* Deploy an item from one workspace to another.
|
|
22
|
-
*
|
|
26
|
+
* Deploy an item from one workspace to another. Handles every kind in the shared
|
|
27
|
+
* `DeployKind` union plus the legacy generic `'trigger'` from `DeployWorkspace.svelte`,
|
|
28
|
+
* which carries its sub-kind in `additionalInformation`.
|
|
23
29
|
*/
|
|
24
30
|
export declare function deployItem(params: DeployItemParams): Promise<DeployResult>;
|
|
25
31
|
/**
|
|
@@ -1,9 +1,123 @@
|
|
|
1
|
-
import { AppService, FlowService, FolderService, ResourceService, ScheduleService, ScriptService, VariableService } from './gen';
|
|
2
|
-
import { existsTrigger, getTriggersDeployData, getTriggerPermissionedAs, getTriggerValue } from './utils_deployable';
|
|
1
|
+
import { AppService, AzureTriggerService, EmailTriggerService, FlowService, FolderService, GcpTriggerService, HttpTriggerService, KafkaTriggerService, MqttTriggerService, NatsTriggerService, PostgresTriggerService, ResourceService, ScheduleService, ScriptService, SqsTriggerService, VariableService, WebsocketTriggerService } from './gen';
|
|
2
|
+
import { existsTrigger, getTriggersDeployData, getTriggerPermissionedAs, getTriggerValue, stripOperationalState } from './utils_deployable';
|
|
3
3
|
import { deployItem as sharedDeployItem, deleteItemInWorkspace as sharedDeleteItem, checkItemExists as sharedCheckItemExists, getOnBehalfOf as sharedGetOnBehalfOf, getItemValue as sharedGetItemValue } from 'windmill-utils-internal';
|
|
4
4
|
// ---------------------------------------------------------------------------
|
|
5
5
|
// Provider adapter — wraps frontend's class-based services
|
|
6
6
|
// ---------------------------------------------------------------------------
|
|
7
|
+
/**
|
|
8
|
+
* Map a shared `TriggerDeployKind` (e.g. `kafka_trigger`) to the per-kind
|
|
9
|
+
* service class. Per-kind dispatch lives in the adapter so the shared
|
|
10
|
+
* `deployItem` only needs to know "trigger" vs "not trigger".
|
|
11
|
+
*/
|
|
12
|
+
function triggerServiceFor(kind) {
|
|
13
|
+
switch (kind) {
|
|
14
|
+
case 'http_trigger':
|
|
15
|
+
return {
|
|
16
|
+
exists: HttpTriggerService.existsHttpTrigger,
|
|
17
|
+
get: HttpTriggerService.getHttpTrigger,
|
|
18
|
+
create: HttpTriggerService.createHttpTrigger,
|
|
19
|
+
update: HttpTriggerService.updateHttpTrigger,
|
|
20
|
+
delete: HttpTriggerService.deleteHttpTrigger
|
|
21
|
+
};
|
|
22
|
+
case 'websocket_trigger':
|
|
23
|
+
return {
|
|
24
|
+
exists: WebsocketTriggerService.existsWebsocketTrigger,
|
|
25
|
+
get: WebsocketTriggerService.getWebsocketTrigger,
|
|
26
|
+
create: WebsocketTriggerService.createWebsocketTrigger,
|
|
27
|
+
update: WebsocketTriggerService.updateWebsocketTrigger,
|
|
28
|
+
delete: WebsocketTriggerService.deleteWebsocketTrigger
|
|
29
|
+
};
|
|
30
|
+
case 'kafka_trigger':
|
|
31
|
+
return {
|
|
32
|
+
exists: KafkaTriggerService.existsKafkaTrigger,
|
|
33
|
+
get: KafkaTriggerService.getKafkaTrigger,
|
|
34
|
+
create: KafkaTriggerService.createKafkaTrigger,
|
|
35
|
+
update: KafkaTriggerService.updateKafkaTrigger,
|
|
36
|
+
delete: KafkaTriggerService.deleteKafkaTrigger
|
|
37
|
+
};
|
|
38
|
+
case 'nats_trigger':
|
|
39
|
+
return {
|
|
40
|
+
exists: NatsTriggerService.existsNatsTrigger,
|
|
41
|
+
get: NatsTriggerService.getNatsTrigger,
|
|
42
|
+
create: NatsTriggerService.createNatsTrigger,
|
|
43
|
+
update: NatsTriggerService.updateNatsTrigger,
|
|
44
|
+
delete: NatsTriggerService.deleteNatsTrigger
|
|
45
|
+
};
|
|
46
|
+
case 'postgres_trigger':
|
|
47
|
+
return {
|
|
48
|
+
exists: PostgresTriggerService.existsPostgresTrigger,
|
|
49
|
+
get: PostgresTriggerService.getPostgresTrigger,
|
|
50
|
+
create: PostgresTriggerService.createPostgresTrigger,
|
|
51
|
+
update: PostgresTriggerService.updatePostgresTrigger,
|
|
52
|
+
delete: PostgresTriggerService.deletePostgresTrigger
|
|
53
|
+
};
|
|
54
|
+
case 'mqtt_trigger':
|
|
55
|
+
return {
|
|
56
|
+
exists: MqttTriggerService.existsMqttTrigger,
|
|
57
|
+
get: MqttTriggerService.getMqttTrigger,
|
|
58
|
+
create: MqttTriggerService.createMqttTrigger,
|
|
59
|
+
update: MqttTriggerService.updateMqttTrigger,
|
|
60
|
+
delete: MqttTriggerService.deleteMqttTrigger
|
|
61
|
+
};
|
|
62
|
+
case 'sqs_trigger':
|
|
63
|
+
return {
|
|
64
|
+
exists: SqsTriggerService.existsSqsTrigger,
|
|
65
|
+
get: SqsTriggerService.getSqsTrigger,
|
|
66
|
+
create: SqsTriggerService.createSqsTrigger,
|
|
67
|
+
update: SqsTriggerService.updateSqsTrigger,
|
|
68
|
+
delete: SqsTriggerService.deleteSqsTrigger
|
|
69
|
+
};
|
|
70
|
+
case 'gcp_trigger':
|
|
71
|
+
return {
|
|
72
|
+
exists: GcpTriggerService.existsGcpTrigger,
|
|
73
|
+
get: GcpTriggerService.getGcpTrigger,
|
|
74
|
+
create: GcpTriggerService.createGcpTrigger,
|
|
75
|
+
update: GcpTriggerService.updateGcpTrigger,
|
|
76
|
+
delete: GcpTriggerService.deleteGcpTrigger
|
|
77
|
+
};
|
|
78
|
+
case 'azure_trigger':
|
|
79
|
+
return {
|
|
80
|
+
exists: AzureTriggerService.existsAzureTrigger,
|
|
81
|
+
get: AzureTriggerService.getAzureTrigger,
|
|
82
|
+
create: AzureTriggerService.createAzureTrigger,
|
|
83
|
+
update: AzureTriggerService.updateAzureTrigger,
|
|
84
|
+
delete: AzureTriggerService.deleteAzureTrigger
|
|
85
|
+
};
|
|
86
|
+
case 'email_trigger':
|
|
87
|
+
return {
|
|
88
|
+
exists: EmailTriggerService.existsEmailTrigger,
|
|
89
|
+
get: EmailTriggerService.getEmailTrigger,
|
|
90
|
+
create: EmailTriggerService.createEmailTrigger,
|
|
91
|
+
update: EmailTriggerService.updateEmailTrigger,
|
|
92
|
+
delete: EmailTriggerService.deleteEmailTrigger
|
|
93
|
+
};
|
|
94
|
+
default: {
|
|
95
|
+
// Exhaustiveness guard: extending TriggerDeployKind without a case here
|
|
96
|
+
// produces a compile error rather than a silent runtime failure.
|
|
97
|
+
const _exhaustive = kind;
|
|
98
|
+
throw new Error(`Unhandled trigger kind: ${_exhaustive}`);
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Map the shared `TriggerDeployKind` to the legacy frontend `TriggerKind`
|
|
104
|
+
* used by helpers in `utils_deployable.ts`.
|
|
105
|
+
*/
|
|
106
|
+
function legacyTriggerKind(kind) {
|
|
107
|
+
const map = {
|
|
108
|
+
http_trigger: 'routes',
|
|
109
|
+
websocket_trigger: 'websockets',
|
|
110
|
+
kafka_trigger: 'kafka',
|
|
111
|
+
nats_trigger: 'nats',
|
|
112
|
+
postgres_trigger: 'postgres',
|
|
113
|
+
mqtt_trigger: 'mqtt',
|
|
114
|
+
sqs_trigger: 'sqs',
|
|
115
|
+
gcp_trigger: 'gcp',
|
|
116
|
+
azure_trigger: 'azure',
|
|
117
|
+
email_trigger: 'emails'
|
|
118
|
+
};
|
|
119
|
+
return map[kind];
|
|
120
|
+
}
|
|
7
121
|
function makeProvider() {
|
|
8
122
|
return {
|
|
9
123
|
existsFlowByPath: (p) => FlowService.existsFlowByPath(p),
|
|
@@ -43,27 +157,61 @@ function makeProvider() {
|
|
|
43
157
|
getFolder: (p) => FolderService.getFolder(p),
|
|
44
158
|
createFolder: (p) => FolderService.createFolder(p),
|
|
45
159
|
updateFolder: (p) => FolderService.updateFolder(p),
|
|
46
|
-
deleteFolder: (p) => FolderService.deleteFolder(p)
|
|
160
|
+
deleteFolder: (p) => FolderService.deleteFolder(p),
|
|
161
|
+
// Triggers
|
|
162
|
+
existsTriggerByKind: (kind, p) => triggerServiceFor(kind).exists(p),
|
|
163
|
+
getTriggerForDeploy: async (kind, p) => {
|
|
164
|
+
// Reuses the existing per-kind transform map (e.g. GCP wipes
|
|
165
|
+
// subscription_id and computes base_endpoint from window.location).
|
|
166
|
+
// Operational-state strip is applied by the shared `deployItem`
|
|
167
|
+
// after this returns.
|
|
168
|
+
const { data } = await getTriggersDeployData(legacyTriggerKind(kind), p.path, p.workspace, p.onBehalfOf);
|
|
169
|
+
return data;
|
|
170
|
+
},
|
|
171
|
+
createTriggerByKind: (kind, p) => triggerServiceFor(kind).create(p),
|
|
172
|
+
updateTriggerByKind: (kind, p) => triggerServiceFor(kind).update(p),
|
|
173
|
+
deleteTriggerByKind: (kind, p) => triggerServiceFor(kind).delete(p),
|
|
174
|
+
getTriggerValue: (kind, p) => getTriggerValue(legacyTriggerKind(kind), p.path, p.workspace),
|
|
175
|
+
getTriggerPermissionedAs: async (kind, p) => {
|
|
176
|
+
const trigger = await triggerServiceFor(kind).get(p);
|
|
177
|
+
return trigger?.permissioned_as;
|
|
178
|
+
},
|
|
179
|
+
// Schedules
|
|
180
|
+
existsSchedule: (p) => ScheduleService.existsSchedule(p),
|
|
181
|
+
getSchedule: (p) => ScheduleService.getSchedule(p),
|
|
182
|
+
createSchedule: (p) => ScheduleService.createSchedule(p),
|
|
183
|
+
updateSchedule: (p) => ScheduleService.updateSchedule(p),
|
|
184
|
+
deleteSchedule: (p) => ScheduleService.deleteSchedule(p)
|
|
47
185
|
};
|
|
48
186
|
}
|
|
49
187
|
/**
|
|
50
|
-
* Deploy an item from one workspace to another.
|
|
51
|
-
*
|
|
188
|
+
* Deploy an item from one workspace to another. Handles every kind in the shared
|
|
189
|
+
* `DeployKind` union plus the legacy generic `'trigger'` from `DeployWorkspace.svelte`,
|
|
190
|
+
* which carries its sub-kind in `additionalInformation`.
|
|
52
191
|
*/
|
|
53
192
|
export async function deployItem(params) {
|
|
54
193
|
const { kind, path, workspaceFrom, workspaceTo, additionalInformation, onBehalfOf } = params;
|
|
55
|
-
// Triggers are frontend-specific (not in the shared module)
|
|
56
194
|
if (kind === 'trigger') {
|
|
195
|
+
// Legacy path: `DeployWorkspace.svelte` doesn't know the per-kind trigger
|
|
196
|
+
// name when building dependency graphs, so it passes `kind: 'trigger'` and
|
|
197
|
+
// the actual sub-kind in `additionalInformation`. Translate to per-kind.
|
|
57
198
|
if (!additionalInformation?.triggers) {
|
|
58
199
|
return { success: false, error: 'Missing triggers kind' };
|
|
59
200
|
}
|
|
60
201
|
try {
|
|
61
|
-
const alreadyExists = await
|
|
202
|
+
const alreadyExists = await existsTrigger({ workspace: workspaceTo, path }, additionalInformation.triggers.kind);
|
|
62
203
|
const { data, createFn, updateFn } = await getTriggersDeployData(additionalInformation.triggers.kind, path, workspaceFrom, onBehalfOf);
|
|
63
204
|
if (alreadyExists) {
|
|
64
|
-
|
|
205
|
+
// Strip operational state so the update doesn't flip the target's
|
|
206
|
+
// existing enabled/mode flag — preserved via `is_mode_unspecified()`
|
|
207
|
+
// on the backend. Mirrors the shared `stripOperationalStateOnUpdate`
|
|
208
|
+
// in the merge-deploy path.
|
|
209
|
+
const stripped = stripOperationalState(data);
|
|
210
|
+
await updateFn({ path, workspace: workspaceTo, requestBody: stripped });
|
|
65
211
|
}
|
|
66
212
|
else {
|
|
213
|
+
// Create — pass source's `mode`/`enabled` through so a new
|
|
214
|
+
// trigger lands with the state the source workspace had.
|
|
67
215
|
await createFn({ workspace: workspaceTo, requestBody: data });
|
|
68
216
|
}
|
|
69
217
|
return { success: true };
|
|
@@ -86,31 +234,11 @@ export async function deleteItemInWorkspace(kind, path, workspace) {
|
|
|
86
234
|
* Check if an item already exists in the target workspace.
|
|
87
235
|
*/
|
|
88
236
|
export async function checkItemExists(kind, path, workspace, additionalInformation) {
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
}
|
|
93
|
-
else if (kind === 'trigger') {
|
|
94
|
-
const triggersKind = [
|
|
95
|
-
'kafka',
|
|
96
|
-
'mqtt',
|
|
97
|
-
'nats',
|
|
98
|
-
'postgres',
|
|
99
|
-
'routes',
|
|
100
|
-
'schedules',
|
|
101
|
-
'sqs',
|
|
102
|
-
'websockets',
|
|
103
|
-
'gcp',
|
|
104
|
-
'azure',
|
|
105
|
-
'emails'
|
|
106
|
-
];
|
|
107
|
-
if (additionalInformation?.triggers &&
|
|
108
|
-
triggersKind.includes(additionalInformation.triggers.kind)) {
|
|
109
|
-
return existsTrigger({ workspace, path }, additionalInformation.triggers.kind);
|
|
110
|
-
}
|
|
111
|
-
else {
|
|
112
|
-
throw new Error(`Unexpected triggers kind, expected one of: '${triggersKind.join(', ')}' got: ${additionalInformation?.triggers?.kind}`);
|
|
237
|
+
if (kind === 'trigger') {
|
|
238
|
+
if (!additionalInformation?.triggers) {
|
|
239
|
+
throw new Error('Missing triggers kind for legacy trigger deploy');
|
|
113
240
|
}
|
|
241
|
+
return existsTrigger({ workspace, path }, additionalInformation.triggers.kind);
|
|
114
242
|
}
|
|
115
243
|
return sharedCheckItemExists(makeProvider(), kind, path, workspace);
|
|
116
244
|
}
|
|
@@ -118,17 +246,15 @@ export async function checkItemExists(kind, path, workspace, additionalInformati
|
|
|
118
246
|
* Get the value of an item for diff comparison.
|
|
119
247
|
*/
|
|
120
248
|
export async function getItemValue(kind, path, workspace, additionalInformation) {
|
|
121
|
-
// Triggers are frontend-specific
|
|
122
249
|
if (kind === 'trigger') {
|
|
123
|
-
if (additionalInformation?.triggers)
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
}
|
|
250
|
+
if (!additionalInformation?.triggers)
|
|
251
|
+
return {};
|
|
252
|
+
try {
|
|
253
|
+
return await getTriggerValue(additionalInformation.triggers.kind, path, workspace);
|
|
254
|
+
}
|
|
255
|
+
catch {
|
|
256
|
+
return {};
|
|
130
257
|
}
|
|
131
|
-
return {};
|
|
132
258
|
}
|
|
133
259
|
return sharedGetItemValue(makeProvider(), kind, path, workspace);
|
|
134
260
|
}
|
|
@@ -136,7 +262,6 @@ export async function getItemValue(kind, path, workspace, additionalInformation)
|
|
|
136
262
|
* Get the on_behalf_of value for a deployable item.
|
|
137
263
|
*/
|
|
138
264
|
export async function getOnBehalfOf(kind, path, workspace, additionalInformation) {
|
|
139
|
-
// Triggers are frontend-specific
|
|
140
265
|
if (kind === 'trigger' && additionalInformation?.triggers) {
|
|
141
266
|
try {
|
|
142
267
|
return await getTriggerPermissionedAs(additionalInformation.triggers.kind, path, workspace);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "windmill-components",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.698.0",
|
|
4
4
|
"scripts": {
|
|
5
5
|
"dev": "vite dev",
|
|
6
6
|
"build": "vite build",
|
|
@@ -159,11 +159,11 @@
|
|
|
159
159
|
"windmill-parser-wasm-regex": "1.692.0",
|
|
160
160
|
"windmill-parser-wasm-ruby": "1.526.1",
|
|
161
161
|
"windmill-parser-wasm-rust": "1.647.1",
|
|
162
|
-
"windmill-parser-wasm-ts": "1.
|
|
162
|
+
"windmill-parser-wasm-ts": "1.695.0",
|
|
163
163
|
"windmill-parser-wasm-wac": "1.668.6",
|
|
164
164
|
"windmill-parser-wasm-yaml": "1.593.0",
|
|
165
165
|
"windmill-sql-datatype-parser-wasm": "1.512.0",
|
|
166
|
-
"windmill-utils-internal": "^1.
|
|
166
|
+
"windmill-utils-internal": "^1.7.0",
|
|
167
167
|
"xterm": "^5.3.0",
|
|
168
168
|
"xterm-readline": "^1.1.2",
|
|
169
169
|
"y-monaco": "^0.1.4",
|
|
@@ -379,6 +379,10 @@
|
|
|
379
379
|
"types": "./package/stores.d.ts",
|
|
380
380
|
"default": "./package/stores.js"
|
|
381
381
|
},
|
|
382
|
+
"./externalDomain": {
|
|
383
|
+
"types": "./package/externalDomain.d.ts",
|
|
384
|
+
"default": "./package/externalDomain.js"
|
|
385
|
+
},
|
|
382
386
|
"./gen": {
|
|
383
387
|
"types": "./package/gen/index.d.ts",
|
|
384
388
|
"default": "./package/gen/index.js"
|