@kong-ui-public/entities-gateway-services 3.11.18 → 3.11.19-pr.2098.c450e4c49.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.
Files changed (38) hide show
  1. package/package.json +4 -4
  2. package/dist/entities-gateway-services.es.js +0 -2420
  3. package/dist/entities-gateway-services.umd.js +0 -1
  4. package/dist/style.css +0 -1
  5. package/dist/types/components/GatewayServiceConfigCard.vue.d.ts +0 -62
  6. package/dist/types/components/GatewayServiceConfigCard.vue.d.ts.map +0 -1
  7. package/dist/types/components/GatewayServiceForm.vue.d.ts +0 -101
  8. package/dist/types/components/GatewayServiceForm.vue.d.ts.map +0 -1
  9. package/dist/types/components/GatewayServiceList.vue.d.ts +0 -136
  10. package/dist/types/components/GatewayServiceList.vue.d.ts.map +0 -1
  11. package/dist/types/components/LegacyGatewayServiceForm.vue.d.ts +0 -86
  12. package/dist/types/components/LegacyGatewayServiceForm.vue.d.ts.map +0 -1
  13. package/dist/types/composables/getPortFromProtocol.d.ts +0 -4
  14. package/dist/types/composables/getPortFromProtocol.d.ts.map +0 -1
  15. package/dist/types/composables/index.d.ts +0 -10
  16. package/dist/types/composables/index.d.ts.map +0 -1
  17. package/dist/types/composables/useI18n.d.ts +0 -9
  18. package/dist/types/composables/useI18n.d.ts.map +0 -1
  19. package/dist/types/composables/useUrlValidators.d.ts +0 -8
  20. package/dist/types/composables/useUrlValidators.d.ts.map +0 -1
  21. package/dist/types/constants.d.ts +0 -15
  22. package/dist/types/constants.d.ts.map +0 -1
  23. package/dist/types/gateway-services-endpoints.d.ts +0 -24
  24. package/dist/types/gateway-services-endpoints.d.ts.map +0 -1
  25. package/dist/types/index.d.ts +0 -8
  26. package/dist/types/index.d.ts.map +0 -1
  27. package/dist/types/types/gateway-service-config-card.d.ts +0 -28
  28. package/dist/types/types/gateway-service-config-card.d.ts.map +0 -1
  29. package/dist/types/types/gateway-service-form.d.ts +0 -75
  30. package/dist/types/types/gateway-service-form.d.ts.map +0 -1
  31. package/dist/types/types/gateway-service-list.d.ts +0 -36
  32. package/dist/types/types/gateway-service-list.d.ts.map +0 -1
  33. package/dist/types/types/index.d.ts +0 -4
  34. package/dist/types/types/index.d.ts.map +0 -1
  35. package/dist/types/utils/index.d.ts +0 -2
  36. package/dist/types/utils/index.d.ts.map +0 -1
  37. package/dist/types/utils/urlValidator.d.ts +0 -4
  38. package/dist/types/utils/urlValidator.d.ts.map +0 -1
@@ -1,2420 +0,0 @@
1
- import { defineComponent as Le, computed as k, ref as q, watch as $e, onBeforeMount as it, resolveComponent as G, openBlock as S, createElementBlock as $, createVNode as d, unref as l, createSlots as Re, withCtx as v, createBlock as Ue, Teleport as ze, createElementVNode as I, createCommentVNode as B, createTextVNode as J, toDisplayString as E, withModifiers as We, reactive as Me, onMounted as Qe, renderSlot as Xe, toValue as He, Transition as De, Fragment as rt, renderList as st } from "vue";
2
- import { useRouter as Ge } from "vue-router";
3
- import { BookIcon as Ze, AddIcon as at, ServicesIcon as nt } from "@kong/icons";
4
- import { createI18n as ct, i18nTComponent as dt } from "@kong-ui-public/i18n";
5
- import { useAxios as Oe, useTableState as ut, useFetcher as ft, useDeleteUrlBuilder as pt, FetcherStatus as mt, EntityBaseTable as vt, EntityFilter as gt, PermissionsWrapper as Fe, TableTags as yt, EntityEmptyState as _t, EntityToggleModal as bt, EntityDeleteModal as ht, EntityTypes as wt, useErrors as Ye, useValidators as et, EntityBaseFormType as Be, useGatewayFeatureSupported as tt, EntityBaseForm as lt, SupportedEntityType as Ne, EntityFormSection as Ke, useHelpers as ot, ConfigurationSchemaSection as Ae, ConfigurationSchemaType as kt, EntityBaseConfigCard as Vt } from "@kong-ui-public/entities-shared";
6
- const Ct = {
7
- create: "New gateway service",
8
- serverless_create: "Add a Service",
9
- copy_id: "Copy ID",
10
- copy_json: "Copy JSON",
11
- edit: "Edit",
12
- clear: "Clear",
13
- view: "View Details",
14
- delete: {
15
- title: "Delete a Gateway Service",
16
- description: "Deleting this Gateway Service will also remove any associated plugins. This action cannot be reversed.",
17
- menu_label: "Delete"
18
- }
19
- }, St = {
20
- placeholder: {
21
- konnect: "Filter by name",
22
- kongManager: "Filter by exact name or ID"
23
- }
24
- }, It = {
25
- title: "Gateway Services",
26
- list: {
27
- toolbar_actions: {
28
- new_gateway_service: "New gateway service"
29
- },
30
- table_headers: {
31
- name: "Name",
32
- control_plane: "Control Plane",
33
- protocol: "Protocol",
34
- host: "Host",
35
- port: "Port",
36
- path: "Path",
37
- enabled: "Enabled",
38
- tags: "Tags",
39
- id: "ID",
40
- created_at: "Created At",
41
- updated_at: "Last Modified"
42
- },
43
- empty_state: {
44
- title: "Configure a New Gateway Service",
45
- description: "Gateway services are used to proxy traffic.",
46
- serverless_title: "Configure your first Gateway Service"
47
- }
48
- },
49
- empty_state_v2: {
50
- create: "New gateway service",
51
- title: "Configure your first gateway service",
52
- group: "Services created in gateways within this group will automatically appear here.",
53
- description: "Gateway services represent backend APIs or microservices that receive traffic routed through the gateway."
54
- },
55
- form: {
56
- buttons: {
57
- try_sample: "Try sample API"
58
- },
59
- errors: {
60
- host: {
61
- empty: "Host cannot be empty",
62
- invalid: "Invalid host"
63
- },
64
- port: {
65
- type: "Port must be a number",
66
- invalid: "Port must be between 0 and 65535"
67
- },
68
- path: {
69
- prefix: "Path must begin with /",
70
- invalid: "Path should not include characters outside of the reserved list of RFC 3986"
71
- },
72
- protocol: {
73
- empty: "Protocol cannot be empty",
74
- invalid: "Protocol - value must be one of http, https, grpc, grpcs, tcp, udp, tls, tls_passthrough, ws, wss"
75
- },
76
- url: {
77
- invalid: "The URL must follow a valid format. Example: https://api.kong-air.com/flights"
78
- }
79
- },
80
- sections: {
81
- general: {
82
- title: "General Information",
83
- description: "Provide a name and tags to help identify and manage this service."
84
- },
85
- keys: {
86
- title: "Service endpoint",
87
- description: "Define where this service should send requests.",
88
- checkedGroupLabel: "Choose how and where to send traffic",
89
- urlLabel: "Full URL",
90
- checkedGroupAltLabel: "Protocol, host, port and path",
91
- url: {
92
- label: "Full URL",
93
- description: "Define the service using a single, complete API URL for simple setup."
94
- },
95
- protocol: {
96
- label: "Protocol, host, port, and path",
97
- description: "Manually specify each component of the API’s URL for advanced configurations."
98
- },
99
- viewAdvancedFields: "View advanced fields"
100
- }
101
- },
102
- fields: {
103
- upstream_url: {
104
- label: "Full URL",
105
- placeholder: "e.g. https://api.kong-air.com/flights",
106
- tooltip_for_konnect: "This is the URL of the API you will manage in Konnect.",
107
- tooltip_for_km: "This is the URL of the API you will manage in Kong Gateway."
108
- },
109
- name: {
110
- label: "Name",
111
- placeholder: "Enter a unique name",
112
- tooltip: "The Service name."
113
- },
114
- protocol: {
115
- label: "Protocol",
116
- tooltip: "The protocol used to communicate with the upstream.",
117
- options: {
118
- http: "http",
119
- https: "https",
120
- tcp: "tcp",
121
- tls: "tls",
122
- tls_passthrough: "tls_passthrough",
123
- grpc: "grpc",
124
- grpcs: "grpcs",
125
- ws: "ws",
126
- wss: "wss",
127
- udp: "udp"
128
- }
129
- },
130
- host: {
131
- label: "Host",
132
- placeholder: "e.g. api.kong-air.com",
133
- tooltip: "The host of the upstream server. Note that the host value is case sensitive."
134
- },
135
- path: {
136
- label: "Path",
137
- placeholder: "e.g. /sample",
138
- tooltip: "The path to be used in request to the upstream server."
139
- },
140
- port: {
141
- label: "Port",
142
- tooltip: "The upstream server port."
143
- },
144
- retries: {
145
- label: "Retries",
146
- tooltip: "The number of retries to execute upon failure to proxy."
147
- },
148
- connect_timeout: {
149
- label: "Connection timeout",
150
- tooltip: "The timeout in milliseconds for establishing a connection to the upstream server."
151
- },
152
- write_timeout: {
153
- label: "Write timeout",
154
- tooltip: "The timeout in milliseconds between two successive write operations for transmitting a request to the upstream server."
155
- },
156
- read_timeout: {
157
- label: "Read timeout",
158
- tooltip: "The timeout in milliseconds between two successive read operations for transmitting a request to the upstream server."
159
- },
160
- client_certificate: {
161
- label: "Client certificate",
162
- placeholder: "Enter a Certificate ID",
163
- tooltip: "Certificate to be used as client certificate while TLS handshaking to the upstream server."
164
- },
165
- ca_certificates: {
166
- label: "CA certificates",
167
- placeholder: "Enter a comma separated list of CA Certificate IDs",
168
- tooltip: "Array of {code1} object UUIDs that are used to build the trust store while verifying upstream server's TLS certificate. If set to {code2} when Nginx default is respected. If default CA list in Nginx are not specified and TLS verification is enabled, then handshake with upstream server will always fail (because no CA are trusted).",
169
- code1: "CA Certificate",
170
- code2: "null"
171
- },
172
- tls_verify_enabled: {
173
- label: "TLS verify",
174
- help: "If unchecked, use default system setting",
175
- tooltip: "Whether to enable verification of upstream server TLS certificate. If set to {code1}, then the Nginx default is respected.",
176
- code1: "null"
177
- },
178
- tls_verify_option: {
179
- unset: {
180
- display: "Use default system setting"
181
- },
182
- true: {
183
- label: "True",
184
- display: "On"
185
- },
186
- false: {
187
- label: "False",
188
- display: "Off"
189
- }
190
- },
191
- tags: {
192
- label: "Tags",
193
- tooltip: "An optional set of strings associated with the Service for grouping and filtering.",
194
- placeholder: "Enter a list of tags separated by comma",
195
- help: "e.g. tag1, tag2, tag3",
196
- collapse: "Add tags"
197
- },
198
- enabled: {
199
- label: "Enabled",
200
- tooltip: "Whether the Service is active. If set to {false}, the proxy behavior will be as if any routes attached to it do not exist (404). Default: {true}.",
201
- false: "false",
202
- true: "true"
203
- }
204
- }
205
- }
206
- }, Pt = {
207
- general: "Gateway Services could not be retrieved",
208
- delete: "The gateway service could not be deleted at this time.",
209
- copy: "Failed to copy to clipboard",
210
- urlErrorMessage: "Error: invalid URL"
211
- }, Et = {
212
- success: "Copied {val} to clipboard",
213
- success_brief: "Successfully copied to clipboard"
214
- }, Ft = {
215
- gateway_services: "gateway services"
216
- }, Ut = {
217
- actions: Ct,
218
- search: St,
219
- gateway_services: It,
220
- errors: Pt,
221
- copy: Et,
222
- glossary: Ft
223
- };
224
- function $t() {
225
- const n = ct("en-us", Ut);
226
- return {
227
- i18n: n,
228
- i18nT: dt(n)
229
- // Translation component <i18n-t>
230
- };
231
- }
232
- function At() {
233
- return {
234
- getPortFromProtocol: (K, y) => {
235
- const p = [80, 443], s = Number(y);
236
- if ((s || s === 0) && !p.includes(s))
237
- return s;
238
- switch (K) {
239
- case "grpcs":
240
- case "tls":
241
- case "https":
242
- case "wss":
243
- return 443;
244
- case "grpc":
245
- case "tcp":
246
- case "http":
247
- case "ws":
248
- default:
249
- return 80;
250
- }
251
- }
252
- };
253
- }
254
- function xt() {
255
- const { i18n: { t: n } } = ne.useI18n();
256
- return {
257
- validateHost: (b) => {
258
- if (!b || b.trim() === "") return n("gateway_services.form.errors.host.empty");
259
- const M = /^(?!:\/\/)([a-zA-Z0-9]([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(\.([a-zA-Z0-9]([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?))*)(\.[a-zA-Z]{1,63})?$/;
260
- return /^((25[0-5]|2[0-4][0-9]|[0-1]?[0-9]?[0-9])\.){3}(25[0-5]|2[0-4][0-9]|[0-1]?[0-9]?[0-9])$/.test(b) || M.test(b) ? "" : n("gateway_services.form.errors.host.invalid");
261
- },
262
- validateProtocol: (b, M) => !b || b.trim() === "" ? n("gateway_services.form.errors.protocol.empty") : (b = b.slice(0, -1), M.find((r) => {
263
- if (r.value === b) return r;
264
- }) === void 0 ? n("gateway_services.form.errors.protocol.invalid") : ""),
265
- validatePath: (b) => !b || b === "" ? "" : b.startsWith("/") ? /[^A-Za-z0-9\-._~:/?#[\]@!$&'()*+,;=%]/.test(b) ? n("gateway_services.form.errors.path.invalid") : "" : n("gateway_services.form.errors.path.prefix"),
266
- validatePort: (b) => {
267
- if (b == null || b === "")
268
- return "";
269
- const M = typeof b == "string" ? parseInt(b, 10) : b;
270
- return isNaN(M) ? n("gateway_services.form.errors.port.type") : M < 0 || M > 65535 ? n("gateway_services.form.errors.port.invalid") : "";
271
- }
272
- };
273
- }
274
- const ne = {
275
- useI18n: $t,
276
- usePortFromProtocol: At,
277
- useUrlValidators: xt
278
- }, xe = "/v2/control-planes/{controlPlaneId}/core-entities", Te = "/{workspace}", ve = {
279
- list: {
280
- konnect: {
281
- all: `${xe}/services`
282
- },
283
- kongManager: {
284
- all: `${Te}/services`
285
- }
286
- },
287
- form: {
288
- konnect: {
289
- create: `${xe}/services`,
290
- validate: `${xe}/v1/schemas/json/service/validate`,
291
- edit: `${xe}/services/{id}`
292
- },
293
- kongManager: {
294
- create: `${Te}/services`,
295
- validate: `${Te}/schemas/services/validate`,
296
- edit: `${Te}/services/{id}`
297
- }
298
- }
299
- }, Tt = "#00abd2", Rt = "24px", Mt = { class: "kong-ui-entities-gateway-services-list" }, Bt = { class: "button-row" }, Kt = { class: "empty-state-icon-gateway" }, Lt = { key: 1 }, Wt = /* @__PURE__ */ Le({
300
- __name: "GatewayServiceList",
301
- props: {
302
- /** The base konnect or kongManger config. Pass additional config props in the shared entity component as needed. */
303
- config: {
304
- type: Object,
305
- required: !0,
306
- validator: (n) => !(!n || !["konnect", "kongManager"].includes(n == null ? void 0 : n.app) || !n.createRoute || !n.getViewRoute || !n.getEditRoute || n.app === "kongManager" && !n.isExactMatch && !n.filterSchema)
307
- },
308
- // used to override the default identifier for the cache entry
309
- cacheIdentifier: {
310
- type: String,
311
- default: ""
312
- },
313
- /** A synchronous or asynchronous function, that returns a boolean, that evaluates if the user can create a new entity */
314
- canCreate: {
315
- type: Function,
316
- required: !1,
317
- default: async () => !0
318
- },
319
- /** A synchronous or asynchronous function, that returns a boolean, that evaluates if the user can delete a given entity */
320
- canDelete: {
321
- type: Function,
322
- required: !1,
323
- default: async () => !0
324
- },
325
- /** A synchronous or asynchronous function, that returns a boolean, that evaluates if the user can edit a given entity */
326
- canEdit: {
327
- type: Function,
328
- required: !1,
329
- default: async () => !0
330
- },
331
- /** A synchronous or asynchronous function, that returns a boolean, that evaluates if the user can retrieve (view details) a given entity */
332
- canRetrieve: {
333
- type: Function,
334
- required: !1,
335
- default: async () => !0
336
- },
337
- /** default to false, setting to true will teleport the toolbar button to the destination in the consuming app */
338
- useActionOutside: {
339
- type: Boolean,
340
- default: !1
341
- },
342
- /** user is onboarding, use onboarding text */
343
- isServerless: {
344
- type: Boolean,
345
- default: !1
346
- },
347
- /**
348
- * Enables the new empty state design, this prop can be removed when
349
- * the khcp-14756-empty-states-m2 FF is removed.
350
- */
351
- enableV2EmptyStates: {
352
- type: Boolean,
353
- default: !1
354
- }
355
- },
356
- emits: ["error", "click:learn-more", "copy:success", "copy:error", "delete:success", "toggle:success"],
357
- setup(n, { emit: K }) {
358
- var c;
359
- const y = K, p = n, { i18n: { t: s, formatUnixTimeStamp: b } } = ne.useI18n(), M = Ge(), { axiosInstance: Q } = Oe((c = p.config) == null ? void 0 : c.axiosRequestConfig), { hasRecords: r, handleStateChange: D } = ut(() => z.value), P = k(() => r.value && p.config.app === "konnect"), ie = k(() => !p.enableV2EmptyStates && p.config.app === "konnect"), ce = k(() => p.config.app !== "kongManager" || !!p.config.disableSorting), Y = {
360
- // the Name column is non-hidable
361
- name: { label: s("gateway_services.list.table_headers.name"), searchable: !0, sortable: !0, hidable: !1 },
362
- ...p.config.showControlPlaneColumn ? { control_plane: { label: s("gateway_services.list.table_headers.control_plane") } } : {},
363
- protocol: { label: s("gateway_services.list.table_headers.protocol"), searchable: !0, sortable: !0 },
364
- host: { label: s("gateway_services.list.table_headers.host"), searchable: !0, sortable: !0 },
365
- port: { label: s("gateway_services.list.table_headers.port"), searchable: !0, sortable: !0 },
366
- path: { label: s("gateway_services.list.table_headers.path"), searchable: !0, sortable: !0 },
367
- enabled: { label: s("gateway_services.list.table_headers.enabled"), searchable: !0, sortable: !0 },
368
- tags: { label: s("gateway_services.list.table_headers.tags"), sortable: !1 },
369
- updated_at: { label: s("gateway_services.list.table_headers.updated_at"), sortable: !0 },
370
- created_at: { label: s("gateway_services.list.table_headers.created_at"), sortable: !0 }
371
- }, we = {
372
- columnVisibility: {
373
- created_at: !1
374
- }
375
- }, de = Y, x = k(() => {
376
- var m, C;
377
- let g = `${p.config.apiBaseUrl}${ve.list[p.config.app].all}`;
378
- return p.config.app === "konnect" ? g = g.replace(/{controlPlaneId}/gi, ((m = p.config) == null ? void 0 : m.controlPlaneId) || "") : p.config.app === "kongManager" && (g = g.replace(/\/{workspace}/gi, (C = p.config) != null && C.workspace ? `/${p.config.workspace}` : "")), g;
379
- }), ge = k(() => p.config.apiBaseUrl.startsWith("/") ? new URL(`${window.location.origin}${x.value}`) : new URL(x.value)), z = q(""), Ie = k(() => {
380
- const g = p.config.app === "konnect" || p.config.isExactMatch;
381
- if (g)
382
- return {
383
- isExactMatch: g,
384
- placeholder: s(`search.placeholder.${p.config.app}`)
385
- };
386
- const { name: m, enabled: C, protocol: W, host: pe, port: N, path: me } = Y;
387
- return {
388
- isExactMatch: g,
389
- fields: { name: m, enabled: C, protocol: W, host: pe, port: N, path: me },
390
- schema: p.config.filterSchema
391
- };
392
- }), {
393
- fetcher: o,
394
- fetcherState: w,
395
- fetcherCacheKey: re
396
- } = ft({ ...p.config, cacheIdentifier: p.cacheIdentifier }, x.value), ye = () => {
397
- z.value = "";
398
- }, ke = () => {
399
- re.value++;
400
- }, e = q(null), A = k(() => ({
401
- ctaPath: p.config.createRoute,
402
- ctaText: T.value ? p.isServerless ? s("actions.serverless_create") : s("actions.create") : void 0,
403
- message: `${s("gateway_services.list.empty_state.description")}${p.config.additionMessageForEmptyState ? ` ${p.config.additionMessageForEmptyState}` : ""}`,
404
- title: T.value ? p.isServerless ? s("gateway_services.list.empty_state.serverless_title") : s("gateway_services.list.empty_state.title") : s("gateway_services.title")
405
- })), ue = q(!1), O = q(null), se = k(() => {
406
- const g = {
407
- action: "disable",
408
- id: "",
409
- name: ""
410
- };
411
- if (O.value) {
412
- const { enabled: m, id: C, name: W } = O.value;
413
- g.action = m ? "disable" : "enable", g.id = C, g.name = W || C;
414
- }
415
- return g;
416
- }), Pe = (g) => {
417
- ue.value = !0, O.value = g;
418
- }, oe = () => {
419
- ue.value = !1, O.value = null;
420
- }, Ve = async () => {
421
- var W, pe;
422
- if (!await ((W = p.canEdit) == null ? void 0 : W.call(p, O.value)) || !O.value)
423
- return;
424
- const m = `${ge.value.href}/${O.value.id}`, C = !O.value.enabled;
425
- try {
426
- const { data: N } = ((pe = p.config) == null ? void 0 : pe.app) === "konnect" ? await Q.put(m, { ...O.value, enabled: C }) : await Q.patch(m, { ...O.value, enabled: C });
427
- y("toggle:success", N), O.value.enabled = C;
428
- } catch (N) {
429
- y("error", N);
430
- }
431
- }, Ce = (g) => {
432
- p.config.getControlPlaneRoute && M.push(p.config.getControlPlaneRoute(g));
433
- }, fe = async (g, m) => {
434
- const C = g.id;
435
- if (!await m(C)) {
436
- y("copy:error", {
437
- entity: g,
438
- field: "id",
439
- message: s("errors.copy")
440
- });
441
- return;
442
- }
443
- y("copy:success", {
444
- entity: g,
445
- field: "id",
446
- message: s("copy.success", { val: C })
447
- });
448
- }, _e = async (g, m) => {
449
- const C = JSON.stringify(g);
450
- if (!await m(C)) {
451
- y("copy:error", {
452
- entity: g,
453
- message: s("errors.copy")
454
- });
455
- return;
456
- }
457
- y("copy:success", {
458
- entity: g,
459
- message: s("copy.success_brief")
460
- });
461
- }, be = async (g) => {
462
- var C;
463
- await ((C = p.canRetrieve) == null ? void 0 : C.call(p, g)) && M.push(p.config.getViewRoute(g.id));
464
- }, Ee = (g) => ({
465
- label: s("actions.view"),
466
- to: p.config.getViewRoute(g)
467
- }), ee = (g) => ({
468
- label: s("actions.edit"),
469
- to: p.config.getEditRoute(g)
470
- }), H = q(void 0), Z = q(!1), te = q(!1), ae = q(""), i = pt(p.config, x.value), u = (g) => {
471
- H.value = g, Z.value = !0, ae.value = "";
472
- }, V = () => {
473
- Z.value = !1, H.value = void 0;
474
- }, X = async () => {
475
- var g, m, C;
476
- if ((g = H.value) != null && g.id) {
477
- te.value = !0;
478
- try {
479
- await Q.delete(i(H.value.id)), y("delete:success", H.value), V(), re.value++;
480
- } catch (W) {
481
- ae.value = ((C = (m = W.response) == null ? void 0 : m.data) == null ? void 0 : C.message) || W.message || s("errors.delete"), y("error", W);
482
- } finally {
483
- te.value = !1;
484
- }
485
- }
486
- }, L = () => {
487
- M.push(p.config.createRoute);
488
- };
489
- $e(w, (g) => {
490
- var m, C, W;
491
- if (g.status === mt.Error) {
492
- e.value = {
493
- title: s("errors.general")
494
- }, (W = (C = (m = g.error) == null ? void 0 : m.response) == null ? void 0 : C.data) != null && W.message && (e.value.message = g.error.response.data.message), y("error", g.error);
495
- return;
496
- }
497
- e.value = null;
498
- });
499
- const T = q(!1);
500
- return it(async () => {
501
- T.value = await p.canCreate();
502
- }), (g, m) => {
503
- const C = G("KButton"), W = G("KBadge"), pe = G("KInputSwitch"), N = G("KDropdownItem"), me = G("KClipboardProvider");
504
- return S(), $("div", Mt, [
505
- d(l(vt), {
506
- "cache-identifier": n.cacheIdentifier,
507
- "default-table-preferences": we,
508
- "disable-sorting": ce.value,
509
- "empty-state-options": A.value,
510
- "enable-entity-actions": "",
511
- "error-message": e.value,
512
- fetcher: l(o),
513
- "fetcher-cache-key": l(re),
514
- "pagination-type": "offset",
515
- "preferences-storage-key": "kong-ui-entities-gateway-services-list",
516
- query: z.value,
517
- "table-headers": l(de),
518
- onClearSearchInput: ye,
519
- "onClick:row": m[5] || (m[5] = (h) => be(h)),
520
- onSort: ke,
521
- onState: l(D)
522
- }, Re({
523
- "toolbar-filter": v(() => [
524
- d(l(gt), {
525
- modelValue: z.value,
526
- "onUpdate:modelValue": m[0] || (m[0] = (h) => z.value = h),
527
- config: Ie.value
528
- }, null, 8, ["modelValue", "config"])
529
- ]),
530
- "toolbar-button": v(() => [
531
- (S(), Ue(ze, {
532
- disabled: !n.useActionOutside,
533
- to: "#kong-ui-app-page-header-action-button"
534
- }, [
535
- I("div", Bt, [
536
- P.value ? (S(), Ue(C, {
537
- key: 0,
538
- appearance: "secondary",
539
- class: "open-learning-hub",
540
- "data-testid": "gateway-services-learn-more-button",
541
- icon: "",
542
- onClick: m[1] || (m[1] = (h) => g.$emit("click:learn-more"))
543
- }, {
544
- default: v(() => [
545
- d(l(Ze), { decorative: "" })
546
- ]),
547
- _: 1
548
- })) : B("", !0),
549
- d(l(Fe), {
550
- "auth-function": () => n.canCreate()
551
- }, {
552
- default: v(() => [
553
- d(C, {
554
- appearance: "primary",
555
- "data-testid": "toolbar-add-gateway-service",
556
- size: n.useActionOutside ? "medium" : "large",
557
- to: n.config.createRoute
558
- }, {
559
- default: v(() => [
560
- d(l(at)),
561
- J(" " + E(l(s)("gateway_services.list.toolbar_actions.new_gateway_service")), 1)
562
- ]),
563
- _: 1
564
- }, 8, ["size", "to"])
565
- ]),
566
- _: 1
567
- }, 8, ["auth-function"])
568
- ])
569
- ], 8, ["disabled"]))
570
- ]),
571
- name: v(({ rowValue: h }) => [
572
- I("b", null, E(h ?? "-"), 1)
573
- ]),
574
- control_plane: v(({ row: h }) => {
575
- var t;
576
- return [
577
- (t = h.x_meta) != null && t.cluster_id ? (S(), Ue(W, {
578
- key: 0,
579
- tooltip: h.x_meta.cluster_id,
580
- "truncation-tooltip": "",
581
- onClick: We((a) => Ce(h.x_meta.cluster_id), ["stop"])
582
- }, {
583
- default: v(() => [
584
- J(E(h.x_meta.cluster_id), 1)
585
- ]),
586
- _: 2
587
- }, 1032, ["tooltip", "onClick"])) : (S(), $("b", Lt, "-"))
588
- ];
589
- }),
590
- enabled: v(({ row: h }) => [
591
- d(l(Fe), {
592
- "auth-function": () => n.canEdit(h),
593
- "force-show": ""
594
- }, {
595
- default: v(({ isAllowed: t }) => [
596
- I("div", {
597
- onClick: m[4] || (m[4] = We(() => {
598
- }, ["stop"]))
599
- }, [
600
- d(pe, {
601
- modelValue: h.enabled,
602
- "onUpdate:modelValue": (a) => h.enabled = a,
603
- "data-testid": `row-${h.id}-toggle-input`,
604
- disabled: !t,
605
- onClick: We((a) => Pe(h), ["prevent"])
606
- }, null, 8, ["modelValue", "onUpdate:modelValue", "data-testid", "disabled", "onClick"])
607
- ])
608
- ]),
609
- _: 2
610
- }, 1032, ["auth-function"])
611
- ]),
612
- tags: v(({ rowValue: h }) => [
613
- d(l(yt), { tags: h }, null, 8, ["tags"])
614
- ]),
615
- created_at: v(({ rowValue: h }) => [
616
- J(E(l(b)(h)), 1)
617
- ]),
618
- updated_at: v(({ row: h, rowValue: t }) => [
619
- J(E(l(b)(t ?? h.created_at)), 1)
620
- ]),
621
- actions: v(({ row: h }) => [
622
- d(me, null, {
623
- default: v(({ copyToClipboard: t }) => [
624
- d(N, {
625
- "data-testid": "action-entity-copy-id",
626
- onClick: (a) => fe(h, t)
627
- }, {
628
- default: v(() => [
629
- J(E(l(s)("actions.copy_id")), 1)
630
- ]),
631
- _: 2
632
- }, 1032, ["onClick"])
633
- ]),
634
- _: 2
635
- }, 1024),
636
- d(me, null, {
637
- default: v(({ copyToClipboard: t }) => [
638
- d(N, {
639
- "data-testid": "action-entity-copy-json",
640
- onClick: (a) => _e(h, t)
641
- }, {
642
- default: v(() => [
643
- J(E(l(s)("actions.copy_json")), 1)
644
- ]),
645
- _: 2
646
- }, 1032, ["onClick"])
647
- ]),
648
- _: 2
649
- }, 1024),
650
- d(l(Fe), {
651
- "auth-function": () => n.canRetrieve(h)
652
- }, {
653
- default: v(() => [
654
- d(N, {
655
- "data-testid": "action-entity-view",
656
- "has-divider": "",
657
- item: Ee(h.id)
658
- }, null, 8, ["item"])
659
- ]),
660
- _: 2
661
- }, 1032, ["auth-function"]),
662
- d(l(Fe), {
663
- "auth-function": () => n.canEdit(h)
664
- }, {
665
- default: v(() => [
666
- d(N, {
667
- "data-testid": "action-entity-edit",
668
- item: ee(h.id)
669
- }, null, 8, ["item"])
670
- ]),
671
- _: 2
672
- }, 1032, ["auth-function"]),
673
- d(l(Fe), {
674
- "auth-function": () => n.canDelete(h)
675
- }, {
676
- default: v(() => [
677
- d(N, {
678
- danger: "",
679
- "data-testid": "action-entity-delete",
680
- "has-divider": "",
681
- onClick: (t) => u(h)
682
- }, {
683
- default: v(() => [
684
- J(E(l(s)("actions.delete.menu_label")), 1)
685
- ]),
686
- _: 2
687
- }, 1032, ["onClick"])
688
- ]),
689
- _: 2
690
- }, 1032, ["auth-function"])
691
- ]),
692
- _: 2
693
- }, [
694
- !l(r) && ie.value ? {
695
- name: "outside-actions",
696
- fn: v(() => [
697
- (S(), Ue(ze, {
698
- disabled: !n.useActionOutside,
699
- to: "#kong-ui-app-page-header-action-button"
700
- }, [
701
- d(C, {
702
- appearance: "secondary",
703
- class: "open-learning-hub",
704
- "data-testid": "gateway-services-more-button",
705
- icon: "",
706
- onClick: m[2] || (m[2] = (h) => g.$emit("click:learn-more"))
707
- }, {
708
- default: v(() => [
709
- d(l(Ze), { decorative: "" })
710
- ]),
711
- _: 1
712
- })
713
- ], 8, ["disabled"]))
714
- ]),
715
- key: "0"
716
- } : void 0,
717
- !z.value && n.enableV2EmptyStates && n.config.app === "konnect" ? {
718
- name: "empty-state",
719
- fn: v(() => {
720
- var h;
721
- return [
722
- d(l(_t), {
723
- "action-button-text": l(s)("gateway_services.empty_state_v2.create"),
724
- appearance: "secondary",
725
- "can-create": () => n.canCreate(),
726
- "data-testid": "gateway-services-entity-empty-state",
727
- description: l(s)("gateway_services.empty_state_v2.description"),
728
- "learn-more": n.config.app === "konnect",
729
- title: l(s)("gateway_services.empty_state_v2.title"),
730
- "onClick:create": L,
731
- "onClick:learnMore": m[3] || (m[3] = (t) => g.$emit("click:learn-more"))
732
- }, Re({
733
- image: v(() => [
734
- I("div", Kt, [
735
- d(l(nt), {
736
- color: l(Tt),
737
- size: l(Rt)
738
- }, null, 8, ["color", "size"])
739
- ])
740
- ]),
741
- _: 2
742
- }, [
743
- (h = n.config) != null && h.isControlPlaneGroup ? {
744
- name: "message",
745
- fn: v(() => [
746
- J(E(l(s)("gateway_services.empty_state_v2.group")), 1)
747
- ]),
748
- key: "0"
749
- } : void 0
750
- ]), 1032, ["action-button-text", "can-create", "description", "learn-more", "title"])
751
- ];
752
- }),
753
- key: "1"
754
- } : void 0
755
- ]), 1032, ["cache-identifier", "disable-sorting", "empty-state-options", "error-message", "fetcher", "fetcher-cache-key", "query", "table-headers", "onState"]),
756
- d(l(bt), {
757
- action: se.value.action,
758
- "entity-id": se.value.id,
759
- "entity-name": se.value.name,
760
- "entity-type": l(s)("glossary.gateway_services"),
761
- "on-confirm": Ve,
762
- visible: ue.value,
763
- onCancel: oe,
764
- onProceed: oe
765
- }, null, 8, ["action", "entity-id", "entity-name", "entity-type", "visible"]),
766
- d(l(ht), {
767
- "action-pending": te.value,
768
- description: l(s)("actions.delete.description"),
769
- "entity-name": H.value && (H.value.name || H.value.id),
770
- "entity-type": l(wt).GatewayService,
771
- error: ae.value,
772
- title: l(s)("actions.delete.title"),
773
- visible: Z.value,
774
- onCancel: V,
775
- onProceed: X
776
- }, null, 8, ["action-pending", "description", "entity-name", "entity-type", "error", "title", "visible"])
777
- ]);
778
- };
779
- }
780
- }), je = (n, K) => {
781
- const y = n.__vccOpts || n;
782
- for (const [p, s] of K)
783
- y[p] = s;
784
- return y;
785
- }, Ml = /* @__PURE__ */ je(Wt, [["__scopeId", "data-v-887d2198"]]), Dt = { class: "kong-ui-entities-gateway-service-form" }, qt = { key: 0 }, Gt = { class: "gateway-service-form-traffic-label" }, Ot = { class: "gateway-service-form-margin-bottom" }, Nt = {
786
- key: 0,
787
- class: "gateway-service-form-group-fields"
788
- }, jt = {
789
- key: 1,
790
- class: "gateway-service-form-group-fields"
791
- }, zt = { key: 0 }, Ht = { class: "gateway-service-form-margin-top" }, Zt = { class: "gateway-service-form-margin-bottom" }, Jt = { class: "gateway-service-form-margin-bottom" }, Qt = { class: "gateway-service-form-margin-bottom" }, Xt = { class: "gateway-service-form-margin-bottom" }, Yt = {
792
- key: 0,
793
- class: "gateway-service-form-margin-bottom"
794
- }, el = {
795
- key: 1,
796
- class: "gateway-service-form-margin-bottom"
797
- }, tl = {
798
- key: 2,
799
- class: "gateway-service-form-margin-bottom"
800
- }, ll = {
801
- key: 0,
802
- class: "checkbox-aligned-radio"
803
- }, ol = {
804
- key: 1,
805
- class: "checkbox-aligned-radio"
806
- }, il = /* @__PURE__ */ Le({
807
- __name: "LegacyGatewayServiceForm",
808
- props: {
809
- /** The base konnect or kongManger config. Pass additional config props in the shared entity component as needed. */
810
- config: {
811
- type: Object,
812
- required: !0,
813
- validator: (n) => !(!n || !["konnect", "kongManager"].includes(n == null ? void 0 : n.app) || n.app === "konnect" && !n.controlPlaneId || n.app === "kongManager" && typeof n.workspace != "string" || !n.cancelRoute)
814
- },
815
- /** If a valid Gateway Service ID is provided, it will put the form in Edit mode instead of Create */
816
- gatewayServiceId: {
817
- type: String,
818
- required: !1,
819
- default: ""
820
- },
821
- /** Whether show or hide EntityFormSection info column */
822
- hideSectionsInfo: {
823
- type: Boolean,
824
- required: !1,
825
- default: !1
826
- }
827
- },
828
- emits: ["update", "error", "url-valid:success", "url-valid:error", "loading", "model-updated"],
829
- setup(n, { expose: K, emit: y }) {
830
- var ae;
831
- const p = y, s = n, b = q(!0), M = Ge(), { i18nT: Q, i18n: { t: r } } = ne.useI18n(), { getMessageFromError: D } = Ye(), { axiosInstance: P } = Oe((ae = s.config) == null ? void 0 : ae.axiosRequestConfig), ie = et(), ce = k(() => ve.form[s.config.app].edit), Y = k(() => s.gatewayServiceId ? Be.Edit : Be.Create), we = q(!1), de = k(() => !!s.gatewayServiceId), x = q(de.value ? "protocol" : "url"), ge = ne.usePortFromProtocol(), z = q(""), Ie = k(() => !!z.value), o = Me({
832
- fields: {
833
- name: "",
834
- protocol: "http",
835
- host: "",
836
- path: "",
837
- port: 80,
838
- url: "",
839
- retries: 5,
840
- connect_timeout: 6e4,
841
- write_timeout: 6e4,
842
- read_timeout: 6e4,
843
- client_certificate: "",
844
- ca_certificates: "",
845
- tls_verify_enabled: !1,
846
- tls_verify_value: !1,
847
- tags: ""
848
- },
849
- isReadonly: !1,
850
- errorMessage: ""
851
- }), w = Me({
852
- name: "",
853
- protocol: "http",
854
- host: "",
855
- path: "",
856
- port: 80,
857
- url: "",
858
- retries: 5,
859
- connect_timeout: 6e4,
860
- write_timeout: 6e4,
861
- read_timeout: 6e4,
862
- client_certificate: "",
863
- ca_certificates: "",
864
- tls_verify_enabled: !1,
865
- tls_verify_value: !1,
866
- tags: ""
867
- }), re = s.config.app === "konnect" || tt({
868
- gatewayInfo: s.config.gatewayInfo,
869
- // 'ws' and 'wss' are not valid values for the protocol field in Gateway Community Edition or before Gateway Enterprise Edition 3.0
870
- supportedRange: {
871
- enterprise: ["3.0"]
872
- }
873
- }), ye = [
874
- {
875
- label: r("gateway_services.form.fields.protocol.options.http"),
876
- value: "http",
877
- group: "http"
878
- },
879
- {
880
- label: r("gateway_services.form.fields.protocol.options.https"),
881
- value: "https",
882
- group: "http"
883
- },
884
- {
885
- label: r("gateway_services.form.fields.protocol.options.tcp"),
886
- value: "tcp",
887
- group: "tcp"
888
- },
889
- {
890
- label: r("gateway_services.form.fields.protocol.options.tls"),
891
- value: "tls",
892
- group: "tcp"
893
- },
894
- {
895
- label: r("gateway_services.form.fields.protocol.options.tls_passthrough"),
896
- value: "tls_passthrough",
897
- group: "tcp"
898
- },
899
- {
900
- label: r("gateway_services.form.fields.protocol.options.grpc"),
901
- value: "grpc",
902
- group: "grpc"
903
- },
904
- {
905
- label: r("gateway_services.form.fields.protocol.options.grpcs"),
906
- value: "grpcs",
907
- group: "grpc"
908
- },
909
- ...re ? [
910
- {
911
- label: r("gateway_services.form.fields.protocol.options.ws"),
912
- value: "ws",
913
- group: "websocket"
914
- },
915
- {
916
- label: r("gateway_services.form.fields.protocol.options.wss"),
917
- value: "wss",
918
- group: "websocket"
919
- }
920
- ] : [],
921
- {
922
- label: r("gateway_services.form.fields.protocol.options.udp"),
923
- value: "udp",
924
- group: "udp"
925
- }
926
- ], ke = { url: "url", protocol: "protocol" }, e = (i, u) => {
927
- u.value;
928
- }, A = (i) => i ? parseFloat(i) : 0, ue = () => {
929
- b.value = !0, o.errorMessage = "", o.fields.host = w.host, o.fields.path = w.path, o.fields.port = w.port, o.fields.protocol = w.protocol, o.fields.url = w.url, o.fields.retries = w.retries, o.fields.connect_timeout = w.connect_timeout, o.fields.write_timeout = w.write_timeout, o.fields.read_timeout = w.read_timeout, o.fields.client_certificate = w.client_certificate, o.fields.ca_certificates = w.ca_certificates, o.fields.tls_verify_enabled = w.tls_verify_enabled, o.fields.tls_verify_value = w.tls_verify_value;
930
- }, O = () => {
931
- if (o.fields.url && x.value === "url")
932
- try {
933
- const i = new URL(o.fields.url);
934
- o.errorMessage = "", o.fields.protocol = i.protocol.slice(0, -1), o.fields.host = i.hostname, o.fields.path = i.pathname;
935
- const u = Number(i.port);
936
- we.value = !!u, o.fields.port = u || ge.getPortFromProtocol(o.fields.protocol), o.errorMessage = "", p("url-valid:success");
937
- } catch (i) {
938
- o.errorMessage = r("errors.urlErrorMessage"), p("url-valid:error", D(i));
939
- }
940
- else
941
- p("url-valid:success"), o.errorMessage = "";
942
- }, se = k(() => !["tcp", "tls", "tls_passthrough", "grpc", "grpcs", "udp"].includes(o.fields.protocol)), Pe = k(() => {
943
- if (x.value === "url")
944
- return !0;
945
- const i = ["https", "wss", "tls"].includes(o.fields.protocol);
946
- return x.value === "protocol" && i;
947
- }), oe = k(() => {
948
- if (x.value === "url")
949
- return !0;
950
- const i = ["https", "tls"].includes(o.fields.protocol);
951
- return x.value === "protocol" && i;
952
- }), Ve = k(() => {
953
- if (x.value === "url")
954
- return !0;
955
- const i = ["https", "wss", "tls"].includes(o.fields.protocol);
956
- return x.value === "protocol" && i;
957
- }), Ce = (i) => {
958
- z.value = ie.utf8Name(i);
959
- }, fe = k(() => de.value && JSON.stringify(o.fields) !== JSON.stringify(w) || x.value === "url" && !!o.fields.url || x.value === "protocol" && !!o.fields.host), _e = (i) => {
960
- var u, V, X;
961
- o.fields.name = (i == null ? void 0 : i.name) || "", o.fields.tags = ((u = i == null ? void 0 : i.tags) == null ? void 0 : u.join(", ")) || "", o.fields.protocol = (i == null ? void 0 : i.protocol) || "http", o.fields.path = (i == null ? void 0 : i.path) || "", o.fields.read_timeout = i != null && i.read_timeout || (i == null ? void 0 : i.read_timeout) === 0 ? i == null ? void 0 : i.read_timeout : 6e4, o.fields.retries = i != null && i.retries || (i == null ? void 0 : i.retries) === 0 ? i == null ? void 0 : i.retries : 5, o.fields.host = (i == null ? void 0 : i.host) || "", o.fields.connect_timeout = i != null && i.connect_timeout || (i == null ? void 0 : i.connect_timeout) === 0 ? i == null ? void 0 : i.connect_timeout : 6e4, o.fields.tls_verify_enabled = (i == null ? void 0 : i.tls_verify) !== "" && (i == null ? void 0 : i.tls_verify) !== null && (i == null ? void 0 : i.tls_verify) !== void 0, o.fields.tls_verify_value = i != null && i.tls_verify ? i == null ? void 0 : i.tls_verify : !1, o.fields.ca_certificates = ((V = i == null ? void 0 : i.ca_certificates) == null ? void 0 : V.join(",")) || "", o.fields.client_certificate = ((X = i == null ? void 0 : i.client_certificate) == null ? void 0 : X.id) || "", o.fields.write_timeout = i != null && i.write_timeout || (i == null ? void 0 : i.write_timeout) === 0 ? i == null ? void 0 : i.write_timeout : 6e4, o.fields.port = i != null && i.port || (i == null ? void 0 : i.port) === 0 ? i == null ? void 0 : i.port : 80, Object.assign(w, o.fields);
962
- }, be = () => {
963
- M.push(s.config.cancelRoute);
964
- }, Ee = k(() => {
965
- var u, V;
966
- let i = `${s.config.apiBaseUrl}${ve.form[s.config.app].validate}`;
967
- return s.config.app === "konnect" ? i = i.replace(/{controlPlaneId}/gi, ((u = s.config) == null ? void 0 : u.controlPlaneId) || "") : s.config.app === "kongManager" && (i = i.replace(/\/{workspace}/gi, (V = s.config) != null && V.workspace ? `/${s.config.workspace}` : "")), i = i.replace(/{id}/gi, s.gatewayServiceId), i;
968
- }), ee = k(() => {
969
- var u, V;
970
- let i = `${s.config.apiBaseUrl}${ve.form[s.config.app][Y.value]}`;
971
- return s.config.app === "konnect" ? i = i.replace(/{controlPlaneId}/gi, ((u = s.config) == null ? void 0 : u.controlPlaneId) || "") : s.config.app === "kongManager" && (i = i.replace(/\/{workspace}/gi, (V = s.config) != null && V.workspace ? `/${s.config.workspace}` : "")), i = i.replace(/{id}/gi, s.gatewayServiceId), i;
972
- }), H = (i) => {
973
- let u = "";
974
- i.url && (u = new URL(i.url).protocol), (["https", "wss", "tls"].includes(i.protocol) || ["https", "wss", "tls"].includes(u)) && (i.tls_verify = i.tls_verify_enabled ? i.tls_verify_value : null), delete i.tls_verify_enabled, delete i.tls_verify_value;
975
- }, Z = k(() => {
976
- var u, V, X, L;
977
- const i = {
978
- name: o.fields.name || null,
979
- tags: o.fields.tags ? (X = (V = (u = o.fields.tags) == null ? void 0 : u.split(",")) == null ? void 0 : V.map((T) => String(T || "").trim())) == null ? void 0 : X.filter((T) => T !== "") : null,
980
- protocol: o.fields.protocol,
981
- path: o.fields.path || null,
982
- read_timeout: o.fields.read_timeout,
983
- retries: o.fields.retries,
984
- host: o.fields.host,
985
- connect_timeout: o.fields.connect_timeout,
986
- tls_verify_value: o.fields.tls_verify_value,
987
- tls_verify_enabled: o.fields.tls_verify_enabled,
988
- ca_certificates: o.fields.ca_certificates ? (L = o.fields.ca_certificates) == null ? void 0 : L.split(",").filter((T) => T !== "") : null,
989
- client_certificate: o.fields.client_certificate ? { id: o.fields.client_certificate } : null,
990
- write_timeout: o.fields.write_timeout,
991
- port: o.fields.port,
992
- url: o.fields.url
993
- };
994
- return o.fields.client_certificate && ["https", "wss", "tls"].includes(o.fields.protocol) && (i.client_certificate = { id: o.fields.client_certificate }), o.fields.tls_verify_enabled && ["https", "wss", "tls"].includes(o.fields.protocol) && (i.tls_verify = o.fields.tls_verify_value), se.value || (i.path = null), Y.value === "create" ? x.value === "url" ? (delete i.protocol, delete i.host, delete i.path, s.config.app === "konnect" && delete i.port) : delete i.url : Y.value === "edit" && delete i.url, i;
995
- }), te = async () => {
996
- var i, u, V, X;
997
- try {
998
- o.isReadonly = !0, O();
999
- const L = Z.value;
1000
- H(L);
1001
- let T;
1002
- if (await P.post(Ee.value, L), Y.value === "create" ? T = await P.post(ee.value, L) : Y.value === "edit" && (T = ((i = s.config) == null ? void 0 : i.app) === "konnect" ? await P.put(ee.value, L) : await P.patch(ee.value, L)), T) {
1003
- const { data: c } = T;
1004
- o.fields.name = (c == null ? void 0 : c.name) || "", o.fields.port = c.port || ge.getPortFromProtocol(c.protocol), o.fields.protocol = (c == null ? void 0 : c.protocol) || "http", o.fields.host = (c == null ? void 0 : c.host) || "", o.fields.path = (c == null ? void 0 : c.path) || "", o.fields.url = (c == null ? void 0 : c.url) || "", o.fields.retries = c != null && c.retries || (c == null ? void 0 : c.retries) === 0 ? c == null ? void 0 : c.retries : 5, o.fields.connect_timeout = c != null && c.connect_timeout || (c == null ? void 0 : c.connect_timeout) === 0 ? c == null ? void 0 : c.connect_timeout : 6e4, o.fields.write_timeout = c != null && c.write_timeout || (c == null ? void 0 : c.write_timeout) === 0 ? c == null ? void 0 : c.write_timeout : 6e4, o.fields.read_timeout = c != null && c.read_timeout || (c == null ? void 0 : c.read_timeout) === 0 ? c == null ? void 0 : c.read_timeout : 6e4, o.fields.client_certificate = ((u = c == null ? void 0 : c.client_certificate) == null ? void 0 : u.id) || "", o.fields.ca_certificates = (V = c == null ? void 0 : c.ca_certificates) != null && V.length ? c == null ? void 0 : c.ca_certificates.join(",") : "", o.fields.tls_verify_enabled = (c == null ? void 0 : c.tls_verify) !== "" && (c == null ? void 0 : c.tls_verify) !== null && (c == null ? void 0 : c.tls_verify) !== void 0, o.fields.tls_verify_value = o.fields.tls_verify_enabled && (c == null ? void 0 : c.tls_verify), o.fields.tags = (X = c == null ? void 0 : c.tags) != null && X.length ? c.tags.join(", ") : "", Object.assign(w, o.fields), p("update", T == null ? void 0 : T.data);
1005
- }
1006
- return T;
1007
- } catch (L) {
1008
- o.errorMessage = D(L), p("error", L);
1009
- } finally {
1010
- o.isReadonly = !1;
1011
- }
1012
- };
1013
- return $e(() => s.gatewayServiceId, () => {
1014
- Object.assign(o.fields, w);
1015
- }), $e(o.fields, (i) => {
1016
- o.fields.port = ge.getPortFromProtocol(i.protocol, String(i.port)), p("model-updated", Z.value);
1017
- }), Qe(() => {
1018
- p("model-updated", Z.value);
1019
- }), K({
1020
- validateUrl: O,
1021
- getPayload: Z,
1022
- saveFormData: te,
1023
- canSubmit: fe,
1024
- initForm: _e
1025
- }), (i, u) => {
1026
- const V = G("KInput"), X = G("KLabel"), L = G("KRadio"), T = G("KSelect"), c = G("KCheckbox"), g = G("KCollapse");
1027
- return S(), $("div", Dt, [
1028
- d(l(lt), {
1029
- "can-submit": fe.value,
1030
- config: n.config,
1031
- "edit-id": n.gatewayServiceId,
1032
- "entity-type": l(Ne).GatewayService,
1033
- "error-message": o.errorMessage,
1034
- "fetch-url": ce.value,
1035
- "form-fields": Z.value,
1036
- "is-readonly": o.isReadonly,
1037
- onCancel: be,
1038
- "onFetch:error": u[25] || (u[25] = (m) => i.$emit("error", m)),
1039
- "onFetch:success": _e,
1040
- onLoading: u[26] || (u[26] = (m) => i.$emit("loading", m)),
1041
- onSubmit: te
1042
- }, {
1043
- "form-actions": v(() => [
1044
- Xe(i.$slots, "form-actions", {
1045
- canSubmit: fe.value,
1046
- cancel: be,
1047
- submit: te
1048
- }, void 0, !0)
1049
- ]),
1050
- default: v(() => [
1051
- d(l(Ke), {
1052
- description: l(r)("gateway_services.form.sections.general.description"),
1053
- "hide-info-header": n.hideSectionsInfo,
1054
- title: l(r)("gateway_services.form.sections.general.title")
1055
- }, {
1056
- default: v(() => [
1057
- d(V, {
1058
- modelValue: o.fields.name,
1059
- "onUpdate:modelValue": u[0] || (u[0] = (m) => o.fields.name = m),
1060
- modelModifiers: { trim: !0 },
1061
- autocomplete: "off",
1062
- "data-testid": "gateway-service-name-input",
1063
- error: Ie.value,
1064
- "error-message": z.value,
1065
- label: l(r)("gateway_services.form.fields.name.label"),
1066
- "label-attributes": {
1067
- info: l(r)("gateway_services.form.fields.name.tooltip"),
1068
- tooltipAttributes: { maxWidth: "400" }
1069
- },
1070
- name: "name",
1071
- placeholder: l(r)("gateway_services.form.fields.name.placeholder"),
1072
- readonly: o.isReadonly,
1073
- type: "text",
1074
- onInput: Ce
1075
- }, null, 8, ["modelValue", "error", "error-message", "label", "label-attributes", "placeholder", "readonly"]),
1076
- d(V, {
1077
- modelValue: o.fields.tags,
1078
- "onUpdate:modelValue": u[1] || (u[1] = (m) => o.fields.tags = m),
1079
- modelModifiers: { trim: !0 },
1080
- autocomplete: "off",
1081
- "data-testid": "gateway-service-tags-input",
1082
- help: l(r)("gateway_services.form.fields.tags.help"),
1083
- label: l(r)("gateway_services.form.fields.tags.label"),
1084
- "label-attributes": {
1085
- info: l(r)("gateway_services.form.fields.tags.tooltip"),
1086
- tooltipAttributes: { maxWidth: "400" }
1087
- },
1088
- name: "tags",
1089
- placeholder: l(r)("gateway_services.form.fields.tags.placeholder"),
1090
- readonly: o.isReadonly,
1091
- type: "text"
1092
- }, null, 8, ["modelValue", "help", "label", "label-attributes", "placeholder", "readonly"])
1093
- ]),
1094
- _: 1
1095
- }, 8, ["description", "hide-info-header", "title"]),
1096
- d(l(Ke), {
1097
- description: l(r)("gateway_services.form.sections.keys.description"),
1098
- "hide-info-header": n.hideSectionsInfo,
1099
- title: l(r)("gateway_services.form.sections.keys.title")
1100
- }, {
1101
- default: v(() => [
1102
- de.value ? B("", !0) : (S(), $("div", qt, [
1103
- I("div", Gt, [
1104
- d(X, { required: "" }, {
1105
- default: v(() => [
1106
- J(E(l(r)("gateway_services.form.sections.keys.checkedGroupLabel")), 1)
1107
- ]),
1108
- _: 1
1109
- })
1110
- ]),
1111
- I("div", Ot, [
1112
- d(L, {
1113
- modelValue: x.value,
1114
- "onUpdate:modelValue": u[2] || (u[2] = (m) => x.value = m),
1115
- "data-testid": "gateway-service-url-radio",
1116
- "selected-value": ke.url,
1117
- onChange: ue
1118
- }, {
1119
- default: v(() => [
1120
- J(E(l(r)("gateway_services.form.sections.keys.urlLabel")), 1)
1121
- ]),
1122
- _: 1
1123
- }, 8, ["modelValue", "selected-value"])
1124
- ]),
1125
- x.value === "url" ? (S(), $("div", Nt, [
1126
- d(V, {
1127
- modelValue: o.fields.url,
1128
- "onUpdate:modelValue": u[3] || (u[3] = (m) => o.fields.url = m),
1129
- modelModifiers: { trim: !0 },
1130
- class: "gateway-service-url-input gateway-service-form-margin-bottom",
1131
- "data-testid": "gateway-service-url-input",
1132
- label: l(r)("gateway_services.form.fields.upstream_url.label"),
1133
- "label-attributes": {
1134
- info: n.config.app === "konnect" ? l(r)("gateway_services.form.fields.upstream_url.tooltip_for_konnect") : l(r)("gateway_services.form.fields.upstream_url.tooltip_for_km"),
1135
- tooltipAttributes: { maxWidth: "400" }
1136
- },
1137
- name: "url",
1138
- placeholder: l(r)("gateway_services.form.fields.upstream_url.placeholder"),
1139
- required: ""
1140
- }, null, 8, ["modelValue", "label", "label-attributes", "placeholder"])
1141
- ])) : B("", !0),
1142
- d(L, {
1143
- modelValue: x.value,
1144
- "onUpdate:modelValue": u[4] || (u[4] = (m) => x.value = m),
1145
- "checked-group": "protocol",
1146
- "data-testid": "gateway-service-protocol-radio",
1147
- "selected-value": ke.protocol,
1148
- onChange: ue
1149
- }, {
1150
- default: v(() => [
1151
- J(E(l(r)("gateway_services.form.sections.keys.checkedGroupAltLabel")), 1)
1152
- ]),
1153
- _: 1
1154
- }, 8, ["modelValue", "selected-value"])
1155
- ])),
1156
- x.value === "protocol" || de.value ? (S(), $("div", jt, [
1157
- d(T, {
1158
- modelValue: o.fields.protocol,
1159
- "onUpdate:modelValue": u[5] || (u[5] = (m) => o.fields.protocol = m),
1160
- "data-testid": "gateway-service-protocol-select",
1161
- items: ye,
1162
- label: l(r)("gateway_services.form.fields.protocol.label"),
1163
- "label-attributes": {
1164
- info: l(r)("gateway_services.form.fields.protocol.tooltip"),
1165
- tooltipAttributes: { maxWidth: "400" }
1166
- },
1167
- readonly: o.isReadonly,
1168
- required: "",
1169
- width: "100%",
1170
- onSelected: u[6] || (u[6] = (m) => e(o.fields.protocol, m))
1171
- }, null, 8, ["modelValue", "label", "label-attributes", "readonly"]),
1172
- d(V, {
1173
- modelValue: o.fields.host,
1174
- "onUpdate:modelValue": u[7] || (u[7] = (m) => o.fields.host = m),
1175
- modelModifiers: { trim: !0 },
1176
- class: "gateway-service-form-margin-top",
1177
- "data-testid": "gateway-service-host-input",
1178
- label: l(r)("gateway_services.form.fields.host.label"),
1179
- "label-attributes": {
1180
- info: l(r)("gateway_services.form.fields.host.tooltip"),
1181
- tooltipAttributes: { maxWidth: "400" }
1182
- },
1183
- name: "host",
1184
- placeholder: l(r)("gateway_services.form.fields.host.placeholder"),
1185
- required: ""
1186
- }, null, 8, ["modelValue", "label", "label-attributes", "placeholder"]),
1187
- se.value ? (S(), $("div", zt, [
1188
- d(V, {
1189
- modelValue: o.fields.path,
1190
- "onUpdate:modelValue": u[8] || (u[8] = (m) => o.fields.path = m),
1191
- modelModifiers: { trim: !0 },
1192
- class: "gateway-service-form-margin-top",
1193
- "data-testid": "gateway-service-path-input",
1194
- label: l(r)("gateway_services.form.fields.path.label"),
1195
- "label-attributes": {
1196
- info: l(r)("gateway_services.form.fields.path.tooltip"),
1197
- tooltipAttributes: { maxWidth: "400" }
1198
- },
1199
- name: "path",
1200
- placeholder: l(r)("gateway_services.form.fields.path.placeholder")
1201
- }, null, 8, ["modelValue", "label", "label-attributes", "placeholder"])
1202
- ])) : B("", !0),
1203
- d(V, {
1204
- modelValue: o.fields.port,
1205
- "onUpdate:modelValue": [
1206
- u[9] || (u[9] = (m) => o.fields.port = m),
1207
- u[10] || (u[10] = () => {
1208
- o.fields.port = A(o.fields.port + "");
1209
- })
1210
- ],
1211
- class: "gateway-service-form-margin-top",
1212
- "data-testid": "gateway-service-port-input",
1213
- label: l(r)("gateway_services.form.fields.port.label"),
1214
- "label-attributes": {
1215
- info: l(r)("gateway_services.form.fields.port.tooltip"),
1216
- tooltipAttributes: { maxWidth: "400" }
1217
- },
1218
- name: "port",
1219
- type: "number"
1220
- }, null, 8, ["modelValue", "label", "label-attributes"])
1221
- ])) : B("", !0),
1222
- d(g, {
1223
- modelValue: b.value,
1224
- "onUpdate:modelValue": u[24] || (u[24] = (m) => b.value = m),
1225
- "data-testid": "advanced-fields-collapse",
1226
- "trigger-alignment": "leading",
1227
- "trigger-label": l(r)("gateway_services.form.sections.keys.viewAdvancedFields")
1228
- }, {
1229
- default: v(() => [
1230
- I("div", Ht, [
1231
- I("div", Zt, [
1232
- d(V, {
1233
- modelValue: o.fields.retries,
1234
- "onUpdate:modelValue": [
1235
- u[11] || (u[11] = (m) => o.fields.retries = m),
1236
- u[12] || (u[12] = () => {
1237
- o.fields.retries = A(o.fields.retries + "");
1238
- })
1239
- ],
1240
- autocomplete: "off",
1241
- "data-testid": "gateway-service-retries-input",
1242
- label: l(r)("gateway_services.form.fields.retries.label"),
1243
- "label-attributes": {
1244
- info: l(r)("gateway_services.form.fields.retries.tooltip"),
1245
- tooltipAttributes: { maxWidth: "400" }
1246
- },
1247
- name: "retries",
1248
- readonly: o.isReadonly,
1249
- type: "number"
1250
- }, null, 8, ["modelValue", "label", "label-attributes", "readonly"])
1251
- ]),
1252
- I("div", Jt, [
1253
- d(V, {
1254
- modelValue: o.fields.connect_timeout,
1255
- "onUpdate:modelValue": [
1256
- u[13] || (u[13] = (m) => o.fields.connect_timeout = m),
1257
- u[14] || (u[14] = () => {
1258
- o.fields.connect_timeout = A(o.fields.connect_timeout + "");
1259
- })
1260
- ],
1261
- autocomplete: "off",
1262
- "data-testid": "gateway-service-connTimeout-input",
1263
- label: l(r)("gateway_services.form.fields.connect_timeout.label"),
1264
- "label-attributes": {
1265
- info: l(r)("gateway_services.form.fields.connect_timeout.tooltip"),
1266
- tooltipAttributes: { maxWidth: "400" }
1267
- },
1268
- name: "connTimeout",
1269
- readonly: o.isReadonly,
1270
- type: "number"
1271
- }, null, 8, ["modelValue", "label", "label-attributes", "readonly"])
1272
- ]),
1273
- I("div", Qt, [
1274
- d(V, {
1275
- modelValue: o.fields.write_timeout,
1276
- "onUpdate:modelValue": [
1277
- u[15] || (u[15] = (m) => o.fields.write_timeout = m),
1278
- u[16] || (u[16] = () => {
1279
- o.fields.write_timeout = A(o.fields.write_timeout + "");
1280
- })
1281
- ],
1282
- autocomplete: "off",
1283
- "data-testid": "gateway-service-writeTimeout-input",
1284
- label: l(r)("gateway_services.form.fields.write_timeout.label"),
1285
- "label-attributes": {
1286
- info: l(r)("gateway_services.form.fields.write_timeout.tooltip"),
1287
- tooltipAttributes: { maxWidth: "400" }
1288
- },
1289
- name: "writeTimeout",
1290
- readonly: o.isReadonly,
1291
- type: "number"
1292
- }, null, 8, ["modelValue", "label", "label-attributes", "readonly"])
1293
- ]),
1294
- I("div", Xt, [
1295
- d(V, {
1296
- modelValue: o.fields.read_timeout,
1297
- "onUpdate:modelValue": [
1298
- u[17] || (u[17] = (m) => o.fields.read_timeout = m),
1299
- u[18] || (u[18] = () => {
1300
- o.fields.read_timeout = A(o.fields.read_timeout + "");
1301
- })
1302
- ],
1303
- autocomplete: "off",
1304
- "data-testid": "gateway-service-readTimeout-input",
1305
- label: l(r)("gateway_services.form.fields.read_timeout.label"),
1306
- "label-attributes": {
1307
- info: l(r)("gateway_services.form.fields.read_timeout.tooltip"),
1308
- tooltipAttributes: { maxWidth: "400" }
1309
- },
1310
- name: "readTimeout",
1311
- readonly: o.isReadonly,
1312
- type: "number"
1313
- }, null, 8, ["modelValue", "label", "label-attributes", "readonly"])
1314
- ]),
1315
- Pe.value ? (S(), $("div", Yt, [
1316
- d(V, {
1317
- modelValue: o.fields.client_certificate,
1318
- "onUpdate:modelValue": u[19] || (u[19] = (m) => o.fields.client_certificate = m),
1319
- modelModifiers: { trim: !0 },
1320
- autocomplete: "off",
1321
- "data-testid": "gateway-service-clientCert-input",
1322
- label: l(r)("gateway_services.form.fields.client_certificate.label"),
1323
- "label-attributes": {
1324
- info: l(r)("gateway_services.form.fields.client_certificate.tooltip"),
1325
- tooltipAttributes: { maxWidth: "400" }
1326
- },
1327
- name: "clientCert",
1328
- placeholder: l(r)("gateway_services.form.fields.client_certificate.placeholder"),
1329
- readonly: o.isReadonly,
1330
- type: "text"
1331
- }, null, 8, ["modelValue", "label", "label-attributes", "placeholder", "readonly"])
1332
- ])) : B("", !0),
1333
- oe.value ? (S(), $("div", el, [
1334
- d(V, {
1335
- modelValue: o.fields.ca_certificates,
1336
- "onUpdate:modelValue": u[20] || (u[20] = (m) => o.fields.ca_certificates = m),
1337
- modelModifiers: { trim: !0 },
1338
- autocomplete: "off",
1339
- "data-testid": "gateway-service-ca-certs-input",
1340
- label: l(r)("gateway_services.form.fields.ca_certificates.label"),
1341
- "label-attributes": { tooltipAttributes: { maxWidth: "400" } },
1342
- placeholder: l(r)("gateway_services.form.fields.ca_certificates.placeholder"),
1343
- readonly: o.isReadonly,
1344
- type: "text"
1345
- }, {
1346
- "label-tooltip": v(() => [
1347
- d(l(Q), {
1348
- keypath: "gateway_services.form.fields.ca_certificates.tooltip",
1349
- scope: "global"
1350
- }, {
1351
- code1: v(() => [
1352
- I("code", null, E(l(r)("gateway_services.form.fields.ca_certificates.code1")), 1)
1353
- ]),
1354
- code2: v(() => [
1355
- I("code", null, E(l(r)("gateway_services.form.fields.ca_certificates.code2")), 1)
1356
- ]),
1357
- _: 1
1358
- })
1359
- ]),
1360
- _: 1
1361
- }, 8, ["modelValue", "label", "placeholder", "readonly"])
1362
- ])) : B("", !0),
1363
- Ve.value ? (S(), $("div", tl, [
1364
- d(c, {
1365
- modelValue: o.fields.tls_verify_enabled,
1366
- "onUpdate:modelValue": u[21] || (u[21] = (m) => o.fields.tls_verify_enabled = m),
1367
- "data-testid": "gateway-service-tls-verify-checkbox",
1368
- description: l(r)("gateway_services.form.fields.tls_verify_enabled.help"),
1369
- label: l(r)("gateway_services.form.fields.tls_verify_enabled.label"),
1370
- "label-attributes": { tooltipAttributes: { maxWidth: "400" } }
1371
- }, {
1372
- tooltip: v(() => [
1373
- d(l(Q), {
1374
- keypath: "gateway_services.form.fields.tls_verify_enabled.tooltip",
1375
- scope: "global"
1376
- }, {
1377
- code1: v(() => [
1378
- I("code", null, E(l(r)("gateway_services.form.fields.tls_verify_enabled.code1")), 1)
1379
- ]),
1380
- _: 1
1381
- })
1382
- ]),
1383
- _: 1
1384
- }, 8, ["modelValue", "description", "label"]),
1385
- o.fields.tls_verify_enabled ? (S(), $("div", ll, [
1386
- d(L, {
1387
- modelValue: o.fields.tls_verify_value,
1388
- "onUpdate:modelValue": u[22] || (u[22] = (m) => o.fields.tls_verify_value = m),
1389
- "data-testid": "gateway-service-tls-verify-true-option",
1390
- label: l(r)("gateway_services.form.fields.tls_verify_option.true.label"),
1391
- "selected-value": !0
1392
- }, null, 8, ["modelValue", "label"])
1393
- ])) : B("", !0),
1394
- o.fields.tls_verify_enabled ? (S(), $("div", ol, [
1395
- d(L, {
1396
- modelValue: o.fields.tls_verify_value,
1397
- "onUpdate:modelValue": u[23] || (u[23] = (m) => o.fields.tls_verify_value = m),
1398
- "data-testid": "gateway-service-tls-verify-false-option",
1399
- label: l(r)("gateway_services.form.fields.tls_verify_option.false.label"),
1400
- "selected-value": !1
1401
- }, null, 8, ["modelValue", "label"])
1402
- ])) : B("", !0)
1403
- ])) : B("", !0)
1404
- ])
1405
- ]),
1406
- _: 1
1407
- }, 8, ["modelValue", "trigger-label"])
1408
- ]),
1409
- _: 1
1410
- }, 8, ["description", "hide-info-header", "title"])
1411
- ]),
1412
- _: 3
1413
- }, 8, ["can-submit", "config", "edit-id", "entity-type", "error-message", "fetch-url", "form-fields", "is-readonly"])
1414
- ]);
1415
- };
1416
- }
1417
- }), Bl = /* @__PURE__ */ je(il, [["__scopeId", "data-v-59d8e66b"]]), rl = { class: "kong-ui-gateway-service-entity-config-card" }, Kl = /* @__PURE__ */ Le({
1418
- __name: "GatewayServiceConfigCard",
1419
- props: {
1420
- /** The base konnect or kongManger config. Pass additional config props in the shared entity component as needed. */
1421
- config: {
1422
- type: Object,
1423
- required: !0,
1424
- validator: (n) => !(!n || !["konnect", "kongManager"].includes(n == null ? void 0 : n.app) || n.app === "konnect" && !n.controlPlaneId || n.app === "kongManager" && typeof n.workspace != "string" || !n.entityId)
1425
- },
1426
- /**
1427
- * External link for documentation that determines visibility of Documentation button
1428
- */
1429
- configCardDoc: {
1430
- type: String,
1431
- default: "",
1432
- required: !1
1433
- },
1434
- /**
1435
- * Control visibility of card title content
1436
- */
1437
- hideTitle: {
1438
- type: Boolean,
1439
- default: !1
1440
- }
1441
- },
1442
- emits: ["loading", "fetch:error", "fetch:success"],
1443
- setup(n) {
1444
- const K = n, { i18n: { t: y }, i18nT: p } = ne.useI18n(), s = k(() => ve.form[K.config.app].edit), { getPropValue: b } = ot(), M = (r, D) => b(r, D) === !0 ? y("gateway_services.form.fields.tls_verify_option.true.display") : y("gateway_services.form.fields.tls_verify_option.false.display"), Q = q({
1445
- id: {},
1446
- name: {
1447
- tooltip: y("gateway_services.form.fields.name.tooltip")
1448
- },
1449
- enabled: {},
1450
- updated_at: {},
1451
- created_at: {},
1452
- protocol: {
1453
- section: Ae.Basic,
1454
- tooltip: y("gateway_services.form.fields.protocol.tooltip")
1455
- },
1456
- host: {
1457
- section: Ae.Basic,
1458
- tooltip: y("gateway_services.form.fields.host.tooltip")
1459
- },
1460
- path: {
1461
- section: Ae.Basic,
1462
- tooltip: y("gateway_services.form.fields.path.tooltip")
1463
- },
1464
- port: {
1465
- section: Ae.Basic,
1466
- tooltip: y("gateway_services.form.fields.port.tooltip")
1467
- },
1468
- tags: {
1469
- tooltip: y("gateway_services.form.fields.tags.tooltip")
1470
- },
1471
- // advanced fields
1472
- retries: {
1473
- order: 1,
1474
- tooltip: y("gateway_services.form.fields.retries.tooltip")
1475
- },
1476
- connect_timeout: {
1477
- order: 2,
1478
- tooltip: y("gateway_services.form.fields.connect_timeout.tooltip")
1479
- },
1480
- write_timeout: {
1481
- order: 3,
1482
- tooltip: y("gateway_services.form.fields.write_timeout.tooltip")
1483
- },
1484
- read_timeout: {
1485
- order: 4,
1486
- tooltip: y("gateway_services.form.fields.read_timeout.tooltip")
1487
- },
1488
- client_certificate: {
1489
- order: 5,
1490
- tooltip: y("gateway_services.form.fields.client_certificate.tooltip")
1491
- },
1492
- ca_certificates: {
1493
- type: kt.BadgeTag,
1494
- label: y("gateway_services.form.fields.ca_certificates.label"),
1495
- order: 6
1496
- },
1497
- tls_verify: {
1498
- label: y("gateway_services.form.fields.tls_verify_enabled.label")
1499
- },
1500
- tls_verify_depth: {
1501
- hidden: !0
1502
- }
1503
- });
1504
- return (r, D) => (S(), $("div", rl, [
1505
- d(l(Vt), {
1506
- config: n.config,
1507
- "config-card-doc": n.configCardDoc,
1508
- "config-schema": Q.value,
1509
- "entity-type": l(Ne).GatewayService,
1510
- "fetch-url": s.value,
1511
- "hide-title": n.hideTitle,
1512
- "onFetch:error": D[0] || (D[0] = (P) => r.$emit("fetch:error", P)),
1513
- "onFetch:success": D[1] || (D[1] = (P) => r.$emit("fetch:success", P)),
1514
- onLoading: D[2] || (D[2] = (P) => r.$emit("loading", P))
1515
- }, {
1516
- "enabled-label-tooltip": v(() => [
1517
- d(l(p), {
1518
- keypath: "gateway_services.form.fields.enabled.tooltip",
1519
- scope: "global"
1520
- }, {
1521
- false: v(() => [
1522
- I("code", null, E(l(y)("gateway_services.form.fields.enabled.false")), 1)
1523
- ]),
1524
- true: v(() => [
1525
- I("code", null, E(l(y)("gateway_services.form.fields.enabled.true")), 1)
1526
- ]),
1527
- _: 1
1528
- })
1529
- ]),
1530
- "ca_certificates-label-tooltip": v(() => [
1531
- d(l(p), {
1532
- keypath: "gateway_services.form.fields.ca_certificates.tooltip",
1533
- scope: "global"
1534
- }, {
1535
- code1: v(() => [
1536
- I("code", null, E(l(y)("gateway_services.form.fields.ca_certificates.code1")), 1)
1537
- ]),
1538
- code2: v(() => [
1539
- I("code", null, E(l(y)("gateway_services.form.fields.ca_certificates.code2")), 1)
1540
- ]),
1541
- _: 1
1542
- })
1543
- ]),
1544
- "tls_verify-label-tooltip": v(() => [
1545
- d(l(p), {
1546
- keypath: "gateway_services.form.fields.tls_verify_enabled.tooltip",
1547
- scope: "global"
1548
- }, {
1549
- code1: v(() => [
1550
- I("code", null, E(l(y)("gateway_services.form.fields.tls_verify_enabled.code1")), 1)
1551
- ]),
1552
- _: 1
1553
- })
1554
- ]),
1555
- tls_verify: v((P) => [
1556
- J(E(typeof l(b)("rowValue", P) == "boolean" ? M("rowValue", P) : l(y)("gateway_services.form.fields.tls_verify_option.unset.display")), 1)
1557
- ]),
1558
- client_certificate: v((P) => [
1559
- J(E(l(b)("rowValue", P) ? l(b)("rowValue", P).id : "–"), 1)
1560
- ]),
1561
- _: 1
1562
- }, 8, ["config", "config-card-doc", "config-schema", "entity-type", "fetch-url", "hide-title"])
1563
- ]));
1564
- }
1565
- });
1566
- typeof WorkerGlobalScope < "u" && globalThis instanceof WorkerGlobalScope;
1567
- const Je = () => {
1568
- };
1569
- function sl(n, K) {
1570
- function y(...p) {
1571
- return new Promise((s, b) => {
1572
- Promise.resolve(n(() => K.apply(this, p), { fn: K, thisArg: this, args: p })).then(s).catch(b);
1573
- });
1574
- }
1575
- return y;
1576
- }
1577
- function al(n, K = {}) {
1578
- let y, p, s = Je;
1579
- const b = (r) => {
1580
- clearTimeout(r), s(), s = Je;
1581
- };
1582
- let M;
1583
- return (r) => {
1584
- const D = He(n), P = He(K.maxWait);
1585
- return y && b(y), D <= 0 || P !== void 0 && P <= 0 ? (p && (b(p), p = null), Promise.resolve(r())) : new Promise((ie, ce) => {
1586
- s = K.rejectOnCancel ? ce : ie, M = r, P && !p && (p = setTimeout(() => {
1587
- y && b(y), p = null, ie(M());
1588
- }, P)), y = setTimeout(() => {
1589
- p && b(p), p = null, ie(r());
1590
- }, D);
1591
- });
1592
- };
1593
- }
1594
- function qe(n, K = 200, y = {}) {
1595
- return sl(
1596
- al(K, y),
1597
- n
1598
- );
1599
- }
1600
- const le = {
1601
- name: "Kong-Air-Flights-API",
1602
- tags: [],
1603
- protocol: "https",
1604
- path: "/flights",
1605
- read_timeout: 6e4,
1606
- retries: 5,
1607
- host: "api.kong-air.com",
1608
- connect_timeout: 6e4,
1609
- ca_certificates: null,
1610
- client_certificate: null,
1611
- write_timeout: 6e4,
1612
- port: 443
1613
- }, nl = { class: "kong-ui-entities-gateway-service-form" }, cl = {
1614
- key: 0,
1615
- class: "gateway-service-form-general-info"
1616
- }, dl = { class: "gateway-service-form-group-selection-wrapper" }, ul = {
1617
- key: 0,
1618
- class: "gateway-service-form-group-fields"
1619
- }, fl = {
1620
- key: 0,
1621
- class: "gateway-service-form-group-fields"
1622
- }, pl = { key: 0 }, ml = {
1623
- key: 0,
1624
- class: "gateway-service-form-advanced-fields"
1625
- }, vl = { class: "gateway-service-form-margin-bottom" }, gl = { class: "gateway-service-form-margin-bottom" }, yl = { class: "gateway-service-form-margin-bottom" }, _l = { class: "gateway-service-form-margin-bottom" }, bl = {
1626
- key: 0,
1627
- class: "gateway-service-form-margin-bottom"
1628
- }, hl = {
1629
- key: 1,
1630
- class: "gateway-service-form-margin-bottom"
1631
- }, wl = {
1632
- key: 2,
1633
- class: "gateway-service-form-margin-bottom"
1634
- }, kl = {
1635
- key: 0,
1636
- class: "checkbox-aligned-radio"
1637
- }, Vl = {
1638
- key: 1,
1639
- class: "checkbox-aligned-radio"
1640
- }, Cl = { class: "gateway-service-form-tags" }, Sl = { class: "form-error-list" }, Il = /* @__PURE__ */ Le({
1641
- __name: "GatewayServiceForm",
1642
- props: {
1643
- /** The base konnect or kongManger config. Pass additional config props in the shared entity component as needed. */
1644
- config: {
1645
- type: Object,
1646
- required: !0,
1647
- validator: (n) => !(!n || !["konnect", "kongManager"].includes(n == null ? void 0 : n.app) || n.app === "konnect" && !n.controlPlaneId || n.app === "kongManager" && typeof n.workspace != "string" || !n.cancelRoute)
1648
- },
1649
- /** If a valid Gateway Service ID is provided, it will put the form in Edit mode instead of Create */
1650
- gatewayServiceId: {
1651
- type: String,
1652
- required: !1,
1653
- default: ""
1654
- },
1655
- /** Whether show or hide EntityFormSection info column */
1656
- hideSectionsInfo: {
1657
- type: Boolean,
1658
- required: !1,
1659
- default: !1
1660
- },
1661
- /** Whether show or hide Try sample API button */
1662
- hideTrySampleApiButton: {
1663
- type: Boolean,
1664
- required: !1,
1665
- default: !1
1666
- }
1667
- },
1668
- emits: ["update", "error", "url-valid:success", "url-valid:error", "loading", "model-updated", "try-sample-api"],
1669
- setup(n, { expose: K, emit: y }) {
1670
- var h;
1671
- const p = y, s = n, b = q(!0), M = Ge(), { i18nT: Q, i18n: { t: r } } = ne.useI18n(), { getErrorFieldsFromError: D } = Ye(), { axiosInstance: P } = Oe((h = s.config) == null ? void 0 : h.axiosRequestConfig), ie = et(), { validateHost: ce, validatePath: Y, validatePort: we, validateProtocol: de } = ne.useUrlValidators(), { objectsAreEqual: x } = ot(), ge = k(() => ve.form[s.config.app].edit), z = k(() => s.gatewayServiceId ? Be.Edit : Be.Create), Ie = q(!1), o = k(() => !!s.gatewayServiceId), w = q(o.value ? "protocol" : "url"), re = ne.usePortFromProtocol(), ye = q(""), ke = k(() => !!ye.value || !!ee("name")), e = Me({
1672
- fields: {
1673
- name: "",
1674
- protocol: "http",
1675
- host: "",
1676
- path: "",
1677
- port: 80,
1678
- url: "",
1679
- retries: 5,
1680
- connect_timeout: 6e4,
1681
- write_timeout: 6e4,
1682
- read_timeout: 6e4,
1683
- client_certificate: "",
1684
- ca_certificates: "",
1685
- tls_verify_enabled: !1,
1686
- tls_verify_value: !1,
1687
- tags: ""
1688
- },
1689
- isReadonly: !1,
1690
- errorMessages: [],
1691
- formFieldErrors: {
1692
- host: "",
1693
- port: "",
1694
- path: "",
1695
- name: "",
1696
- url: "",
1697
- tags: "",
1698
- retries: "",
1699
- connect_timeout: "",
1700
- write_timeout: "",
1701
- read_timeout: "",
1702
- client_certificate: "",
1703
- ca_certificates: "",
1704
- tls_verify_enabled: "",
1705
- tls_verify_value: ""
1706
- }
1707
- }), A = Me({
1708
- name: "",
1709
- protocol: "http",
1710
- host: "",
1711
- path: "",
1712
- port: 80,
1713
- url: "",
1714
- retries: 5,
1715
- connect_timeout: 6e4,
1716
- write_timeout: 6e4,
1717
- read_timeout: 6e4,
1718
- client_certificate: "",
1719
- ca_certificates: "",
1720
- tls_verify_enabled: !1,
1721
- tls_verify_value: !1,
1722
- tags: ""
1723
- }), ue = s.config.app === "konnect" || tt({
1724
- gatewayInfo: s.config.gatewayInfo,
1725
- // 'ws' and 'wss' are not valid values for the protocol field in Gateway Community Edition or before Gateway Enterprise Edition 3.0
1726
- supportedRange: {
1727
- enterprise: ["3.0"]
1728
- }
1729
- }), O = [
1730
- {
1731
- label: r("gateway_services.form.fields.protocol.options.http"),
1732
- value: "http",
1733
- group: "http"
1734
- },
1735
- {
1736
- label: r("gateway_services.form.fields.protocol.options.https"),
1737
- value: "https",
1738
- group: "http"
1739
- },
1740
- {
1741
- label: r("gateway_services.form.fields.protocol.options.tcp"),
1742
- value: "tcp",
1743
- group: "tcp"
1744
- },
1745
- {
1746
- label: r("gateway_services.form.fields.protocol.options.tls"),
1747
- value: "tls",
1748
- group: "tcp"
1749
- },
1750
- {
1751
- label: r("gateway_services.form.fields.protocol.options.tls_passthrough"),
1752
- value: "tls_passthrough",
1753
- group: "tcp"
1754
- },
1755
- {
1756
- label: r("gateway_services.form.fields.protocol.options.grpc"),
1757
- value: "grpc",
1758
- group: "grpc"
1759
- },
1760
- {
1761
- label: r("gateway_services.form.fields.protocol.options.grpcs"),
1762
- value: "grpcs",
1763
- group: "grpc"
1764
- },
1765
- ...ue ? [
1766
- {
1767
- label: r("gateway_services.form.fields.protocol.options.ws"),
1768
- value: "ws",
1769
- group: "websocket"
1770
- },
1771
- {
1772
- label: r("gateway_services.form.fields.protocol.options.wss"),
1773
- value: "wss",
1774
- group: "websocket"
1775
- }
1776
- ] : [],
1777
- {
1778
- label: r("gateway_services.form.fields.protocol.options.udp"),
1779
- value: "udp",
1780
- group: "udp"
1781
- }
1782
- ], se = { url: "url", protocol: "protocol" }, Pe = (t, a) => {
1783
- a.value;
1784
- }, oe = (t) => t ? parseFloat(t) : 0, Ve = () => {
1785
- e.fields.host = A.host, e.fields.path = A.path, e.fields.port = A.port, e.fields.protocol = A.protocol, e.fields.url = A.url, e.fields.retries = A.retries, e.fields.connect_timeout = A.connect_timeout, e.fields.write_timeout = A.write_timeout, e.fields.read_timeout = A.read_timeout, e.fields.client_certificate = A.client_certificate, e.fields.ca_certificates = A.ca_certificates, e.fields.tls_verify_enabled = A.tls_verify_enabled, e.fields.tls_verify_value = A.tls_verify_value;
1786
- }, Ce = () => {
1787
- b.value = !0, Z(), e.errorMessages = [], Ve();
1788
- }, fe = () => {
1789
- switch (Ve(), e.fields.name = `${le.name}-${(/* @__PURE__ */ new Date()).toISOString().replace(/\D/g, "").slice(0, 17)}`, w.value) {
1790
- case "url":
1791
- e.fields.url = `${le.protocol}://${le.host}${le.path}`;
1792
- break;
1793
- case "protocol":
1794
- e.fields.host = le.host, e.fields.path = le.path, e.fields.protocol = le.protocol, e.fields.port = le.port;
1795
- break;
1796
- default:
1797
- e.fields.url = `${le.protocol}://${le.host}${le.path}`;
1798
- }
1799
- }, _e = qe(() => {
1800
- if (Z(), e.fields.url.length)
1801
- try {
1802
- const t = new URL(e.fields.url), a = de(t.protocol, O);
1803
- if (a) throw new Error(a);
1804
- e.fields.protocol = t.protocol.slice(0, -1);
1805
- const F = ce(t.hostname);
1806
- if (F) throw new Error(F);
1807
- e.fields.host = t.hostname;
1808
- const j = Y(t.pathname);
1809
- if (j) throw new Error(j);
1810
- e.fields.path = t.pathname;
1811
- const U = we(t.port);
1812
- if (U) throw new Error(U);
1813
- const R = Number(t.port);
1814
- Ie.value = !!R, e.fields.port = R || re.getPortFromProtocol(e.fields.protocol), p("url-valid:success");
1815
- } catch {
1816
- p("url-valid:error", r("gateway_services.form.errors.url.invalid")), e.formFieldErrors.url = r("gateway_services.form.errors.url.invalid");
1817
- }
1818
- }, 300), be = qe((t) => {
1819
- Z(t);
1820
- }, 300), Ee = k(() => !!e.formFieldErrors.url || !!e.formFieldErrors.host || !!e.formFieldErrors.port), ee = (t) => {
1821
- if (e.errorMessages.length) return "";
1822
- const a = e.formFieldErrors;
1823
- return a[t] ? a[t] : "";
1824
- }, H = qe((t) => {
1825
- Z(t ?? void 0);
1826
- const a = ce(e.fields.host);
1827
- a && (e.formFieldErrors.host = a);
1828
- const F = Y(e.fields.path);
1829
- F && (e.formFieldErrors.path = F);
1830
- const j = we(e.fields.port);
1831
- j && (e.formFieldErrors.port = j), te.value ? p("url-valid:success") : p("url-valid:error", e.errorMessages.join(",") || r("gateway_services.form.errors.url.invalid"));
1832
- }, 300), Z = (t) => {
1833
- if (t)
1834
- e.formFieldErrors[t] = "";
1835
- else
1836
- for (let a in e.formFieldErrors)
1837
- e.formFieldErrors[a] = "";
1838
- e.errorMessages = [];
1839
- }, te = k(() => {
1840
- for (let t in e.formFieldErrors)
1841
- if (e.formFieldErrors[t].length)
1842
- return !1;
1843
- return !0;
1844
- }), ae = () => {
1845
- e.fields.url && w.value === "url" ? _e() : H();
1846
- }, i = () => `new-service-${(/* @__PURE__ */ new Date()).toISOString().replace(/\D/g, "").slice(0, 17)}`, u = k(() => !["tcp", "tls", "tls_passthrough", "grpc", "grpcs", "udp"].includes(e.fields.protocol)), V = k(() => {
1847
- if (w.value === "url")
1848
- return !0;
1849
- const t = ["https", "wss", "tls"].includes(e.fields.protocol);
1850
- return w.value === "protocol" && t;
1851
- }), X = k(() => {
1852
- if (w.value === "url")
1853
- return !0;
1854
- const t = ["https", "tls"].includes(e.fields.protocol);
1855
- return w.value === "protocol" && t;
1856
- }), L = k(() => {
1857
- if (w.value === "url")
1858
- return !0;
1859
- const t = ["https", "wss", "tls"].includes(e.fields.protocol);
1860
- return w.value === "protocol" && t;
1861
- }), T = (t) => {
1862
- Z("name"), ye.value = ie.utf8Name(t);
1863
- }, c = k(() => {
1864
- const t = !o.value || !x(e.fields, A), a = w.value === "url" && !!e.fields.url && te.value, F = w.value === "protocol" && !!e.fields.host && te.value;
1865
- return t && (a || F);
1866
- }), g = (t) => {
1867
- var a, F, j;
1868
- e.fields.name = (t == null ? void 0 : t.name) || "", e.fields.tags = ((a = t == null ? void 0 : t.tags) == null ? void 0 : a.join(", ")) || "", e.fields.protocol = (t == null ? void 0 : t.protocol) || "http", e.fields.path = (t == null ? void 0 : t.path) || "", e.fields.read_timeout = t != null && t.read_timeout || (t == null ? void 0 : t.read_timeout) === 0 ? t == null ? void 0 : t.read_timeout : 6e4, e.fields.retries = t != null && t.retries || (t == null ? void 0 : t.retries) === 0 ? t == null ? void 0 : t.retries : 5, e.fields.host = (t == null ? void 0 : t.host) || "", e.fields.connect_timeout = t != null && t.connect_timeout || (t == null ? void 0 : t.connect_timeout) === 0 ? t == null ? void 0 : t.connect_timeout : 6e4, e.fields.tls_verify_enabled = (t == null ? void 0 : t.tls_verify) !== "" && (t == null ? void 0 : t.tls_verify) !== null && (t == null ? void 0 : t.tls_verify) !== void 0, e.fields.tls_verify_value = t != null && t.tls_verify ? t == null ? void 0 : t.tls_verify : !1, e.fields.ca_certificates = ((F = t == null ? void 0 : t.ca_certificates) == null ? void 0 : F.join(",")) || "", e.fields.client_certificate = ((j = t == null ? void 0 : t.client_certificate) == null ? void 0 : j.id) || "", e.fields.write_timeout = t != null && t.write_timeout || (t == null ? void 0 : t.write_timeout) === 0 ? t == null ? void 0 : t.write_timeout : 6e4, e.fields.port = t != null && t.port || (t == null ? void 0 : t.port) === 0 ? t == null ? void 0 : t.port : 80, Object.assign(A, e.fields);
1869
- }, m = () => {
1870
- M.push(s.config.cancelRoute);
1871
- }, C = k(() => {
1872
- var a, F;
1873
- let t = `${s.config.apiBaseUrl}${ve.form[s.config.app].validate}`;
1874
- return s.config.app === "konnect" ? t = t.replace(/{controlPlaneId}/gi, ((a = s.config) == null ? void 0 : a.controlPlaneId) || "") : s.config.app === "kongManager" && (t = t.replace(/\/{workspace}/gi, (F = s.config) != null && F.workspace ? `/${s.config.workspace}` : "")), t = t.replace(/{id}/gi, s.gatewayServiceId), t;
1875
- }), W = k(() => {
1876
- var a, F;
1877
- let t = `${s.config.apiBaseUrl}${ve.form[s.config.app][z.value]}`;
1878
- return s.config.app === "konnect" ? t = t.replace(/{controlPlaneId}/gi, ((a = s.config) == null ? void 0 : a.controlPlaneId) || "") : s.config.app === "kongManager" && (t = t.replace(/\/{workspace}/gi, (F = s.config) != null && F.workspace ? `/${s.config.workspace}` : "")), t = t.replace(/{id}/gi, s.gatewayServiceId), t;
1879
- }), pe = (t) => {
1880
- let a = "";
1881
- t.url && (a = new URL(t.url).protocol), (["https", "wss", "tls"].includes(t.protocol) || ["https", "wss", "tls"].includes(a)) && (t.tls_verify = t.tls_verify_enabled ? t.tls_verify_value : null), delete t.tls_verify_enabled, delete t.tls_verify_value;
1882
- }, N = k(() => {
1883
- var a, F, j, U;
1884
- const t = {
1885
- name: e.fields.name || null,
1886
- tags: e.fields.tags ? (j = (F = (a = e.fields.tags) == null ? void 0 : a.split(",")) == null ? void 0 : F.map((R) => String(R || "").trim())) == null ? void 0 : j.filter((R) => R !== "") : null,
1887
- protocol: e.fields.protocol,
1888
- path: e.fields.path || null,
1889
- read_timeout: e.fields.read_timeout,
1890
- retries: e.fields.retries,
1891
- host: e.fields.host,
1892
- connect_timeout: e.fields.connect_timeout,
1893
- tls_verify_value: e.fields.tls_verify_value,
1894
- tls_verify_enabled: e.fields.tls_verify_enabled,
1895
- ca_certificates: e.fields.ca_certificates ? (U = e.fields.ca_certificates) == null ? void 0 : U.split(",").filter((R) => R !== "") : null,
1896
- client_certificate: e.fields.client_certificate ? { id: e.fields.client_certificate } : null,
1897
- write_timeout: e.fields.write_timeout,
1898
- port: e.fields.port,
1899
- url: e.fields.url
1900
- };
1901
- return e.fields.client_certificate && ["https", "wss", "tls"].includes(e.fields.protocol) && (t.client_certificate = { id: e.fields.client_certificate }), e.fields.tls_verify_enabled && ["https", "wss", "tls"].includes(e.fields.protocol) && (t.tls_verify = e.fields.tls_verify_value), u.value || (t.path = null), z.value === "create" ? w.value === "url" ? (delete t.protocol, delete t.host, delete t.path, s.config.app === "konnect" && delete t.port) : delete t.url : z.value === "edit" && delete t.url, t;
1902
- }), me = async () => {
1903
- var t, a, F, j;
1904
- try {
1905
- e.isReadonly = !0, ae();
1906
- const U = N.value;
1907
- pe(U);
1908
- let R;
1909
- if (await P.post(C.value, U), z.value === "create" ? R = await P.post(W.value, U) : z.value === "edit" && (R = ((t = s.config) == null ? void 0 : t.app) === "konnect" ? await P.put(W.value, U) : await P.patch(W.value, U)), R) {
1910
- const { data: f } = R;
1911
- e.fields.name = (f == null ? void 0 : f.name) || "", e.fields.port = f.port || re.getPortFromProtocol(f.protocol), e.fields.protocol = (f == null ? void 0 : f.protocol) || "http", e.fields.host = (f == null ? void 0 : f.host) || "", e.fields.path = (f == null ? void 0 : f.path) || "", e.fields.url = (f == null ? void 0 : f.url) || "", e.fields.retries = f != null && f.retries || (f == null ? void 0 : f.retries) === 0 ? f == null ? void 0 : f.retries : 5, e.fields.connect_timeout = f != null && f.connect_timeout || (f == null ? void 0 : f.connect_timeout) === 0 ? f == null ? void 0 : f.connect_timeout : 6e4, e.fields.write_timeout = f != null && f.write_timeout || (f == null ? void 0 : f.write_timeout) === 0 ? f == null ? void 0 : f.write_timeout : 6e4, e.fields.read_timeout = f != null && f.read_timeout || (f == null ? void 0 : f.read_timeout) === 0 ? f == null ? void 0 : f.read_timeout : 6e4, e.fields.client_certificate = ((a = f == null ? void 0 : f.client_certificate) == null ? void 0 : a.id) || "", e.fields.ca_certificates = (F = f == null ? void 0 : f.ca_certificates) != null && F.length ? f == null ? void 0 : f.ca_certificates.join(",") : "", e.fields.tls_verify_enabled = (f == null ? void 0 : f.tls_verify) !== "" && (f == null ? void 0 : f.tls_verify) !== null && (f == null ? void 0 : f.tls_verify) !== void 0, e.fields.tls_verify_value = e.fields.tls_verify_enabled && (f == null ? void 0 : f.tls_verify), e.fields.tags = (j = f == null ? void 0 : f.tags) != null && j.length ? f.tags.join(", ") : "", Object.assign(A, e.fields), p("update", R == null ? void 0 : R.data);
1912
- }
1913
- return R;
1914
- } catch (U) {
1915
- const { fields: R, messages: f } = D(U);
1916
- e.errorMessages = f, R.length && R.forEach((he) => {
1917
- const Se = he.field;
1918
- Se === "client_certificate.id" ? e.formFieldErrors.client_certificate = he.message : Se.startsWith("ca_certificates") ? e.formFieldErrors.ca_certificates = he.message : Object.keys(e.formFieldErrors).includes(Se) && (e.formFieldErrors = {
1919
- ...e.formFieldErrors,
1920
- [Se]: he.message
1921
- });
1922
- }), p("error", U);
1923
- } finally {
1924
- e.isReadonly = !1;
1925
- }
1926
- };
1927
- return $e(() => s.gatewayServiceId, () => {
1928
- Object.assign(e.fields, A);
1929
- }), $e(e.fields, (t) => {
1930
- e.fields.port = re.getPortFromProtocol(t.protocol, String(t.port)), p("model-updated", N.value);
1931
- }), Qe(() => {
1932
- p("model-updated", N.value), o.value || (e.fields.name = i());
1933
- }), K({
1934
- validateUrl: ae,
1935
- getPayload: N,
1936
- saveFormData: me,
1937
- canSubmit: c,
1938
- initForm: g
1939
- }), (t, a) => {
1940
- const F = G("KRadio"), j = G("KButton"), U = G("KInput"), R = G("KSelect"), f = G("KCheckbox"), he = G("KCollapse"), Se = G("KAlert");
1941
- return S(), $("div", nl, [
1942
- d(l(lt), {
1943
- "can-submit": c.value,
1944
- config: n.config,
1945
- "edit-id": n.gatewayServiceId,
1946
- "entity-type": l(Ne).GatewayService,
1947
- "fetch-url": ge.value,
1948
- "form-fields": N.value,
1949
- "is-readonly": e.isReadonly,
1950
- onCancel: m,
1951
- "onFetch:error": a[30] || (a[30] = (_) => t.$emit("error", _)),
1952
- "onFetch:success": g,
1953
- onLoading: a[31] || (a[31] = (_) => t.$emit("loading", _)),
1954
- onSubmit: me
1955
- }, {
1956
- "form-actions": v(() => [
1957
- Xe(t.$slots, "form-actions", {
1958
- canSubmit: c.value,
1959
- cancel: m,
1960
- submit: me
1961
- }, void 0, !0)
1962
- ]),
1963
- default: v(() => [
1964
- d(l(Ke), {
1965
- description: l(r)("gateway_services.form.sections.keys.description"),
1966
- "hide-info-header": n.hideSectionsInfo,
1967
- title: l(r)("gateway_services.form.sections.keys.title")
1968
- }, {
1969
- default: v(() => [
1970
- o.value ? B("", !0) : (S(), $("div", cl, [
1971
- I("div", dl, [
1972
- d(F, {
1973
- modelValue: w.value,
1974
- "onUpdate:modelValue": a[0] || (a[0] = (_) => w.value = _),
1975
- card: "",
1976
- "card-orientation": "horizontal",
1977
- "data-testid": "gateway-service-url-radio",
1978
- description: l(r)("gateway_services.form.sections.keys.url.description"),
1979
- label: l(r)("gateway_services.form.sections.keys.url.label"),
1980
- "selected-value": se.url,
1981
- onChange: Ce
1982
- }, null, 8, ["modelValue", "description", "label", "selected-value"]),
1983
- d(F, {
1984
- modelValue: w.value,
1985
- "onUpdate:modelValue": a[1] || (a[1] = (_) => w.value = _),
1986
- card: "",
1987
- "card-orientation": "horizontal",
1988
- "checked-group": "protocol",
1989
- "data-testid": "gateway-service-protocol-radio",
1990
- description: l(r)("gateway_services.form.sections.keys.protocol.description"),
1991
- label: l(r)("gateway_services.form.sections.keys.protocol.label"),
1992
- "selected-value": se.protocol,
1993
- onChange: Ce
1994
- }, null, 8, ["modelValue", "description", "label", "selected-value"])
1995
- ]),
1996
- d(De, { name: "slide-fade" }, {
1997
- default: v(() => [
1998
- w.value === "url" ? (S(), $("div", ul, [
1999
- d(U, {
2000
- modelValue: e.fields.url,
2001
- "onUpdate:modelValue": a[2] || (a[2] = (_) => e.fields.url = _),
2002
- modelModifiers: { trim: !0 },
2003
- class: "gateway-service-url-input gateway-service-form-margin-bottom",
2004
- "data-testid": "gateway-service-url-input",
2005
- error: Ee.value,
2006
- "error-message": ee("url"),
2007
- label: l(r)("gateway_services.form.fields.upstream_url.label"),
2008
- "label-attributes": {
2009
- info: n.config.app === "konnect" ? l(r)("gateway_services.form.fields.upstream_url.tooltip_for_konnect") : l(r)("gateway_services.form.fields.upstream_url.tooltip_for_km"),
2010
- tooltipAttributes: { maxWidth: "400" }
2011
- },
2012
- name: "url",
2013
- placeholder: l(r)("gateway_services.form.fields.upstream_url.placeholder"),
2014
- required: "",
2015
- onInput: l(_e)
2016
- }, Re({ _: 2 }, [
2017
- n.hideTrySampleApiButton ? void 0 : {
2018
- name: "after",
2019
- fn: v(() => [
2020
- d(j, {
2021
- appearance: "tertiary",
2022
- "data-testid": "try-sample-api",
2023
- size: "small",
2024
- onClick: fe
2025
- }, {
2026
- default: v(() => [
2027
- J(E(l(r)("gateway_services.form.buttons.try_sample")), 1)
2028
- ]),
2029
- _: 1
2030
- })
2031
- ]),
2032
- key: "0"
2033
- }
2034
- ]), 1032, ["modelValue", "error", "error-message", "label", "label-attributes", "placeholder", "onInput"])
2035
- ])) : B("", !0)
2036
- ]),
2037
- _: 1
2038
- })
2039
- ])),
2040
- d(De, { name: "slide-fade" }, {
2041
- default: v(() => [
2042
- w.value === "protocol" || o.value ? (S(), $("div", fl, [
2043
- d(R, {
2044
- modelValue: e.fields.protocol,
2045
- "onUpdate:modelValue": a[3] || (a[3] = (_) => e.fields.protocol = _),
2046
- "data-testid": "gateway-service-protocol-select",
2047
- items: O,
2048
- label: l(r)("gateway_services.form.fields.protocol.label"),
2049
- "label-attributes": {
2050
- info: l(r)("gateway_services.form.fields.protocol.tooltip"),
2051
- tooltipAttributes: { maxWidth: "400" }
2052
- },
2053
- readonly: e.isReadonly,
2054
- required: "",
2055
- width: "100%",
2056
- onSelected: a[4] || (a[4] = (_) => Pe(e.fields.protocol, _))
2057
- }, null, 8, ["modelValue", "label", "label-attributes", "readonly"]),
2058
- d(U, {
2059
- modelValue: e.fields.host,
2060
- "onUpdate:modelValue": a[5] || (a[5] = (_) => e.fields.host = _),
2061
- modelModifiers: { trim: !0 },
2062
- class: "gateway-service-form-margin-top",
2063
- "data-testid": "gateway-service-host-input",
2064
- error: !!e.formFieldErrors.host,
2065
- "error-message": ee("host"),
2066
- label: l(r)("gateway_services.form.fields.host.label"),
2067
- "label-attributes": {
2068
- info: l(r)("gateway_services.form.fields.host.tooltip"),
2069
- tooltipAttributes: { maxWidth: "400" }
2070
- },
2071
- name: "host",
2072
- placeholder: l(r)("gateway_services.form.fields.host.placeholder"),
2073
- required: "",
2074
- onInput: a[6] || (a[6] = (_) => l(H)("host"))
2075
- }, Re({ _: 2 }, [
2076
- n.hideTrySampleApiButton ? void 0 : {
2077
- name: "after",
2078
- fn: v(() => [
2079
- d(j, {
2080
- appearance: "tertiary",
2081
- size: "small",
2082
- onClick: fe
2083
- }, {
2084
- default: v(() => [
2085
- J(E(l(r)("gateway_services.form.buttons.try_sample")), 1)
2086
- ]),
2087
- _: 1
2088
- })
2089
- ]),
2090
- key: "0"
2091
- }
2092
- ]), 1032, ["modelValue", "error", "error-message", "label", "label-attributes", "placeholder"]),
2093
- u.value ? (S(), $("div", pl, [
2094
- d(U, {
2095
- modelValue: e.fields.path,
2096
- "onUpdate:modelValue": a[7] || (a[7] = (_) => e.fields.path = _),
2097
- modelModifiers: { trim: !0 },
2098
- class: "gateway-service-form-margin-top",
2099
- "data-testid": "gateway-service-path-input",
2100
- error: !!e.formFieldErrors.path,
2101
- "error-message": ee("path"),
2102
- label: l(r)("gateway_services.form.fields.path.label"),
2103
- "label-attributes": {
2104
- info: l(r)("gateway_services.form.fields.path.tooltip"),
2105
- tooltipAttributes: { maxWidth: "400" }
2106
- },
2107
- name: "path",
2108
- placeholder: l(r)("gateway_services.form.fields.path.placeholder"),
2109
- onInput: a[8] || (a[8] = (_) => l(H)("path"))
2110
- }, null, 8, ["modelValue", "error", "error-message", "label", "label-attributes", "placeholder"])
2111
- ])) : B("", !0),
2112
- d(U, {
2113
- modelValue: e.fields.port,
2114
- "onUpdate:modelValue": [
2115
- a[9] || (a[9] = (_) => e.fields.port = _),
2116
- a[11] || (a[11] = () => {
2117
- e.fields.port = oe(e.fields.port + "");
2118
- })
2119
- ],
2120
- class: "gateway-service-form-margin-top",
2121
- "data-testid": "gateway-service-port-input",
2122
- error: !!e.formFieldErrors.port,
2123
- "error-message": ee("port"),
2124
- label: l(r)("gateway_services.form.fields.port.label"),
2125
- "label-attributes": {
2126
- info: l(r)("gateway_services.form.fields.port.tooltip"),
2127
- tooltipAttributes: { maxWidth: "400" }
2128
- },
2129
- name: "port",
2130
- type: "number",
2131
- onInput: a[10] || (a[10] = (_) => l(H)("port"))
2132
- }, null, 8, ["modelValue", "error", "error-message", "label", "label-attributes"])
2133
- ])) : B("", !0)
2134
- ]),
2135
- _: 1
2136
- }),
2137
- d(he, {
2138
- modelValue: b.value,
2139
- "onUpdate:modelValue": a[27] || (a[27] = (_) => b.value = _),
2140
- "data-testid": "advanced-fields-collapse",
2141
- "trigger-alignment": "leading",
2142
- "trigger-label": l(r)("gateway_services.form.sections.keys.viewAdvancedFields")
2143
- }, {
2144
- default: v(() => [
2145
- d(De, { name: "slide-fade" }, {
2146
- default: v(() => [
2147
- b.value ? B("", !0) : (S(), $("div", ml, [
2148
- I("div", vl, [
2149
- d(U, {
2150
- modelValue: e.fields.retries,
2151
- "onUpdate:modelValue": [
2152
- a[12] || (a[12] = (_) => e.fields.retries = _),
2153
- a[13] || (a[13] = () => {
2154
- e.fields.retries = oe(e.fields.retries + "");
2155
- })
2156
- ],
2157
- autocomplete: "off",
2158
- "data-testid": "gateway-service-retries-input",
2159
- label: l(r)("gateway_services.form.fields.retries.label"),
2160
- "label-attributes": {
2161
- info: l(r)("gateway_services.form.fields.retries.tooltip"),
2162
- tooltipAttributes: { maxWidth: "400" }
2163
- },
2164
- name: "retries",
2165
- readonly: e.isReadonly,
2166
- type: "number"
2167
- }, null, 8, ["modelValue", "label", "label-attributes", "readonly"])
2168
- ]),
2169
- I("div", gl, [
2170
- d(U, {
2171
- modelValue: e.fields.connect_timeout,
2172
- "onUpdate:modelValue": [
2173
- a[14] || (a[14] = (_) => e.fields.connect_timeout = _),
2174
- a[15] || (a[15] = () => {
2175
- e.fields.connect_timeout = oe(e.fields.connect_timeout + "");
2176
- })
2177
- ],
2178
- autocomplete: "off",
2179
- "data-testid": "gateway-service-connTimeout-input",
2180
- label: l(r)("gateway_services.form.fields.connect_timeout.label"),
2181
- "label-attributes": {
2182
- info: l(r)("gateway_services.form.fields.connect_timeout.tooltip"),
2183
- tooltipAttributes: { maxWidth: "400" }
2184
- },
2185
- name: "connTimeout",
2186
- readonly: e.isReadonly,
2187
- type: "number"
2188
- }, null, 8, ["modelValue", "label", "label-attributes", "readonly"])
2189
- ]),
2190
- I("div", yl, [
2191
- d(U, {
2192
- modelValue: e.fields.write_timeout,
2193
- "onUpdate:modelValue": [
2194
- a[16] || (a[16] = (_) => e.fields.write_timeout = _),
2195
- a[17] || (a[17] = () => {
2196
- e.fields.write_timeout = oe(e.fields.write_timeout + "");
2197
- })
2198
- ],
2199
- autocomplete: "off",
2200
- "data-testid": "gateway-service-writeTimeout-input",
2201
- label: l(r)("gateway_services.form.fields.write_timeout.label"),
2202
- "label-attributes": {
2203
- info: l(r)("gateway_services.form.fields.write_timeout.tooltip"),
2204
- tooltipAttributes: { maxWidth: "400" }
2205
- },
2206
- name: "writeTimeout",
2207
- readonly: e.isReadonly,
2208
- type: "number"
2209
- }, null, 8, ["modelValue", "label", "label-attributes", "readonly"])
2210
- ]),
2211
- I("div", _l, [
2212
- d(U, {
2213
- modelValue: e.fields.read_timeout,
2214
- "onUpdate:modelValue": [
2215
- a[18] || (a[18] = (_) => e.fields.read_timeout = _),
2216
- a[19] || (a[19] = () => {
2217
- e.fields.read_timeout = oe(e.fields.read_timeout + "");
2218
- })
2219
- ],
2220
- autocomplete: "off",
2221
- "data-testid": "gateway-service-readTimeout-input",
2222
- label: l(r)("gateway_services.form.fields.read_timeout.label"),
2223
- "label-attributes": {
2224
- info: l(r)("gateway_services.form.fields.read_timeout.tooltip"),
2225
- tooltipAttributes: { maxWidth: "400" }
2226
- },
2227
- name: "readTimeout",
2228
- readonly: e.isReadonly,
2229
- type: "number"
2230
- }, null, 8, ["modelValue", "label", "label-attributes", "readonly"])
2231
- ]),
2232
- V.value ? (S(), $("div", bl, [
2233
- d(U, {
2234
- modelValue: e.fields.client_certificate,
2235
- "onUpdate:modelValue": a[20] || (a[20] = (_) => e.fields.client_certificate = _),
2236
- modelModifiers: { trim: !0 },
2237
- autocomplete: "off",
2238
- "data-testid": "gateway-service-clientCert-input",
2239
- error: !!e.formFieldErrors.client_certificate,
2240
- label: l(r)("gateway_services.form.fields.client_certificate.label"),
2241
- "label-attributes": {
2242
- info: l(r)("gateway_services.form.fields.client_certificate.tooltip"),
2243
- tooltipAttributes: { maxWidth: "400" }
2244
- },
2245
- name: "clientCert",
2246
- placeholder: l(r)("gateway_services.form.fields.client_certificate.placeholder"),
2247
- readonly: e.isReadonly,
2248
- type: "text",
2249
- onInput: a[21] || (a[21] = (_) => l(be)("client_certificate"))
2250
- }, null, 8, ["modelValue", "error", "label", "label-attributes", "placeholder", "readonly"])
2251
- ])) : B("", !0),
2252
- X.value ? (S(), $("div", hl, [
2253
- d(U, {
2254
- modelValue: e.fields.ca_certificates,
2255
- "onUpdate:modelValue": a[22] || (a[22] = (_) => e.fields.ca_certificates = _),
2256
- modelModifiers: { trim: !0 },
2257
- autocomplete: "off",
2258
- "data-testid": "gateway-service-ca-certs-input",
2259
- error: !!e.formFieldErrors.ca_certificates,
2260
- label: l(r)("gateway_services.form.fields.ca_certificates.label"),
2261
- "label-attributes": { tooltipAttributes: { maxWidth: "400" } },
2262
- placeholder: l(r)("gateway_services.form.fields.ca_certificates.placeholder"),
2263
- readonly: e.isReadonly,
2264
- type: "text",
2265
- onInput: a[23] || (a[23] = (_) => l(be)("ca_certificates"))
2266
- }, {
2267
- "label-tooltip": v(() => [
2268
- d(l(Q), {
2269
- keypath: "gateway_services.form.fields.ca_certificates.tooltip",
2270
- scope: "global"
2271
- }, {
2272
- code1: v(() => [
2273
- I("code", null, E(l(r)("gateway_services.form.fields.ca_certificates.code1")), 1)
2274
- ]),
2275
- code2: v(() => [
2276
- I("code", null, E(l(r)("gateway_services.form.fields.ca_certificates.code2")), 1)
2277
- ]),
2278
- _: 1
2279
- })
2280
- ]),
2281
- _: 1
2282
- }, 8, ["modelValue", "error", "label", "placeholder", "readonly"])
2283
- ])) : B("", !0),
2284
- L.value ? (S(), $("div", wl, [
2285
- d(f, {
2286
- modelValue: e.fields.tls_verify_enabled,
2287
- "onUpdate:modelValue": a[24] || (a[24] = (_) => e.fields.tls_verify_enabled = _),
2288
- "data-testid": "gateway-service-tls-verify-checkbox",
2289
- description: l(r)("gateway_services.form.fields.tls_verify_enabled.help"),
2290
- label: l(r)("gateway_services.form.fields.tls_verify_enabled.label"),
2291
- "label-attributes": { tooltipAttributes: { maxWidth: "400" } }
2292
- }, {
2293
- tooltip: v(() => [
2294
- d(l(Q), {
2295
- keypath: "gateway_services.form.fields.tls_verify_enabled.tooltip",
2296
- scope: "global"
2297
- }, {
2298
- code1: v(() => [
2299
- I("code", null, E(l(r)("gateway_services.form.fields.tls_verify_enabled.code1")), 1)
2300
- ]),
2301
- _: 1
2302
- })
2303
- ]),
2304
- _: 1
2305
- }, 8, ["modelValue", "description", "label"]),
2306
- e.fields.tls_verify_enabled ? (S(), $("div", kl, [
2307
- d(F, {
2308
- modelValue: e.fields.tls_verify_value,
2309
- "onUpdate:modelValue": a[25] || (a[25] = (_) => e.fields.tls_verify_value = _),
2310
- "data-testid": "gateway-service-tls-verify-true-option",
2311
- label: l(r)("gateway_services.form.fields.tls_verify_option.true.label"),
2312
- "selected-value": !0
2313
- }, null, 8, ["modelValue", "label"])
2314
- ])) : B("", !0),
2315
- e.fields.tls_verify_enabled ? (S(), $("div", Vl, [
2316
- d(F, {
2317
- modelValue: e.fields.tls_verify_value,
2318
- "onUpdate:modelValue": a[26] || (a[26] = (_) => e.fields.tls_verify_value = _),
2319
- "data-testid": "gateway-service-tls-verify-false-option",
2320
- label: l(r)("gateway_services.form.fields.tls_verify_option.false.label"),
2321
- "selected-value": !1
2322
- }, null, 8, ["modelValue", "label"])
2323
- ])) : B("", !0)
2324
- ])) : B("", !0)
2325
- ]))
2326
- ]),
2327
- _: 1
2328
- })
2329
- ]),
2330
- _: 1
2331
- }, 8, ["modelValue", "trigger-label"])
2332
- ]),
2333
- _: 1
2334
- }, 8, ["description", "hide-info-header", "title"]),
2335
- d(l(Ke), {
2336
- description: l(r)("gateway_services.form.sections.general.description"),
2337
- "hide-info-header": n.hideSectionsInfo,
2338
- title: l(r)("gateway_services.form.sections.general.title")
2339
- }, {
2340
- default: v(() => [
2341
- d(U, {
2342
- modelValue: e.fields.name,
2343
- "onUpdate:modelValue": a[28] || (a[28] = (_) => e.fields.name = _),
2344
- modelModifiers: { trim: !0 },
2345
- autocomplete: "off",
2346
- "data-testid": "gateway-service-name-input",
2347
- error: ke.value,
2348
- "error-message": ye.value,
2349
- label: l(r)("gateway_services.form.fields.name.label"),
2350
- "label-attributes": {
2351
- info: l(r)("gateway_services.form.fields.name.tooltip"),
2352
- tooltipAttributes: { maxWidth: "400" }
2353
- },
2354
- name: "name",
2355
- placeholder: l(r)("gateway_services.form.fields.name.placeholder"),
2356
- readonly: e.isReadonly,
2357
- type: "text",
2358
- onInput: T
2359
- }, null, 8, ["modelValue", "error", "error-message", "label", "label-attributes", "placeholder", "readonly"]),
2360
- d(he, {
2361
- "data-testid": "tags-collapse",
2362
- "trigger-alignment": "leading",
2363
- "trigger-label": l(r)("gateway_services.form.fields.tags.collapse")
2364
- }, {
2365
- default: v(() => [
2366
- I("div", Cl, [
2367
- d(U, {
2368
- modelValue: e.fields.tags,
2369
- "onUpdate:modelValue": a[29] || (a[29] = (_) => e.fields.tags = _),
2370
- modelModifiers: { trim: !0 },
2371
- autocomplete: "off",
2372
- "data-testid": "gateway-service-tags-input",
2373
- help: l(r)("gateway_services.form.fields.tags.help"),
2374
- label: l(r)("gateway_services.form.fields.tags.label"),
2375
- "label-attributes": {
2376
- info: l(r)("gateway_services.form.fields.tags.tooltip"),
2377
- tooltipAttributes: { maxWidth: "400" }
2378
- },
2379
- name: "tags",
2380
- placeholder: l(r)("gateway_services.form.fields.tags.placeholder"),
2381
- readonly: e.isReadonly,
2382
- type: "text"
2383
- }, null, 8, ["modelValue", "help", "label", "label-attributes", "placeholder", "readonly"])
2384
- ])
2385
- ]),
2386
- _: 1
2387
- }, 8, ["trigger-label"])
2388
- ]),
2389
- _: 1
2390
- }, 8, ["description", "hide-info-header", "title"]),
2391
- e.errorMessages.length ? (S(), Ue(Se, {
2392
- key: 0,
2393
- appearance: "danger"
2394
- }, {
2395
- default: v(() => [
2396
- I("ul", Sl, [
2397
- (S(!0), $(rt, null, st(e.errorMessages, (_) => (S(), $("li", { key: _ }, E(_), 1))), 128))
2398
- ])
2399
- ]),
2400
- _: 1
2401
- })) : B("", !0)
2402
- ]),
2403
- _: 3
2404
- }, 8, ["can-submit", "config", "edit-id", "entity-type", "fetch-url", "form-fields", "is-readonly"])
2405
- ]);
2406
- };
2407
- }
2408
- }), Ll = /* @__PURE__ */ je(Il, [["__scopeId", "data-v-aac697aa"]]), { validateHost: Pl, validatePort: El, validateProtocol: Fl, validatePath: Ul } = ne.useUrlValidators(), Wl = () => ({
2409
- validateHost: Pl,
2410
- validatePort: El,
2411
- validateProtocol: Fl,
2412
- validatePath: Ul
2413
- });
2414
- export {
2415
- Kl as GatewayServiceConfigCard,
2416
- Ll as GatewayServiceForm,
2417
- Ml as GatewayServiceList,
2418
- Bl as LegacyGatewayServiceForm,
2419
- Wl as useUrlValidator
2420
- };