@kong-ui-public/entities-plugins 11.1.1 → 11.1.2-pr.4053.1e1e0ce4f.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cel-language-DmYQpIfl.js +279 -0
- package/dist/entities-plugins.es.js +48 -32627
- package/dist/entities-plugins.umd.js +136 -134
- package/dist/freeform/style.css +1 -1
- package/dist/index-B9021xAO.js +32993 -0
- package/dist/style.css +1 -1
- package/dist/types/components/PluginEntityForm.vue.d.ts.map +1 -1
- package/dist/types/components/free-form/cel/CelInput.vue.d.ts +38 -0
- package/dist/types/components/free-form/cel/CelInput.vue.d.ts.map +1 -0
- package/dist/types/components/free-form/cel/cel-catalog.d.ts +92 -0
- package/dist/types/components/free-form/cel/cel-catalog.d.ts.map +1 -0
- package/dist/types/components/free-form/cel/cel-hints.d.ts +34 -0
- package/dist/types/components/free-form/cel/cel-hints.d.ts.map +1 -0
- package/dist/types/components/free-form/cel/cel-language.d.ts +49 -0
- package/dist/types/components/free-form/cel/cel-language.d.ts.map +1 -0
- package/dist/types/components/free-form/cel/cel-subjects.d.ts +67 -0
- package/dist/types/components/free-form/cel/cel-subjects.d.ts.map +1 -0
- package/dist/types/components/free-form/cel/cel-tokens.d.ts +6 -0
- package/dist/types/components/free-form/cel/cel-tokens.d.ts.map +1 -0
- package/dist/types/components/free-form/components/AdvancedFields.vue.d.ts.map +1 -1
- package/dist/types/components/free-form/components/ConditionField.vue.d.ts.map +1 -1
- package/dist/types/components/free-form/components/PluginConfigurationForm.vue.d.ts.map +1 -1
- package/dist/types/components/free-form/plugins/acl/ACLModeCard.vue.d.ts.map +1 -1
- package/dist/types/components/free-form/plugins/openid-connect/PrincipalLookupSettings.vue.d.ts +2 -2
- package/dist/types/components/free-form/plugins/openid-connect/PrincipalLookupSettings.vue.d.ts.map +1 -1
- package/dist/types/components/free-form/plugins/openid-connect/PrincipalsSection.vue.d.ts.map +1 -1
- package/dist/types/constants/index.d.ts +19 -1
- package/dist/types/constants/index.d.ts.map +1 -1
- package/dist/types/types/plugin-form.d.ts +20 -0
- package/dist/types/types/plugin-form.d.ts.map +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1,279 @@
|
|
|
1
|
+
import * as h from "monaco-editor";
|
|
2
|
+
import { C as F, g as _, a as W, r as E, e as K, b as k, c as V, d as q, i as B, f as x, h as U, m as J, j as I, k as R } from "./index-B9021xAO.js";
|
|
3
|
+
const M = (t, n) => {
|
|
4
|
+
const r = [], s = (e, o, i) => {
|
|
5
|
+
e && r.push({ kind: n, value: e, name: o || i, id: i });
|
|
6
|
+
};
|
|
7
|
+
for (const { id: e, username: o, custom_id: i } of n.startsWith("consumer-") && !n.startsWith("consumer-group") ? t.consumers ?? [] : []) {
|
|
8
|
+
const a = o || i;
|
|
9
|
+
n === "consumer-id" && s(e, a, e), n === "consumer-username" && s(o, a, e), n === "consumer-custom-id" && s(i, a, e);
|
|
10
|
+
}
|
|
11
|
+
for (const { id: e, name: o } of n.startsWith("consumer-group") ? t.consumerGroups ?? [] : [])
|
|
12
|
+
s(n === "consumer-group-name" ? o : e, o, e);
|
|
13
|
+
if (n === "principal-id") for (const { id: e, display_name: o } of t.principals ?? []) s(e, o, e);
|
|
14
|
+
if (n === "principal-group-id") for (const { id: e, name: o } of t.principalGroups ?? []) s(e, o, e);
|
|
15
|
+
return r;
|
|
16
|
+
}, Q = /* @__PURE__ */ new Set(["as", "break", "const", "continue", "else", "false", "for", "function", "if", "import", "in", "let", "loop", "namespace", "null", "package", "return", "true", "var", "void", "while"]), X = (t) => Array.isArray(t) ? "list" : t === null ? "null" : typeof t, Y = (t) => {
|
|
17
|
+
const n = /* @__PURE__ */ new Map();
|
|
18
|
+
for (const { metadata: r } of t.principals ?? [])
|
|
19
|
+
for (const [s, e] of Object.entries(r ?? {}))
|
|
20
|
+
/^[A-Za-z_]\w*$/.test(s) && !Q.has(s) && n.set(s, (n.get(s) ?? /* @__PURE__ */ new Set()).add(X(e)));
|
|
21
|
+
return [...n].sort(([r], [s]) => r.localeCompare(s)).map(([r, s]) => ({ key: r, types: [...s] }));
|
|
22
|
+
}, L = "([A-Za-z_]\\w*(?:\\s*\\.\\s*[A-Za-z_]\\w*)*)", j = "(?!\\s*[.(\\[\\w])", ee = new RegExp(`(?<![\\w.])${L}\\s*[=!]=\\s*$`), te = new RegExp(`(?<![\\w.])${L}\\s*=\\s*$`), ne = new RegExp(`^\\s*[=!]=\\s*${L}${j}`), se = new RegExp(`^\\s*in\\s+${L}${j}`), N = (t) => t?.kind === "string" ? t.subject : void 0, re = (t, n, r, s) => z(t, n, r, s)?.kind, z = (t, n, r, s) => {
|
|
23
|
+
const e = t.slice(0, n), o = t.slice(r), i = _(e, s), a = (c) => E(c.replace(/\s+/g, ""), i, s), u = e.match(ee)?.[1];
|
|
24
|
+
if (u) return { kind: N(a(u)) };
|
|
25
|
+
const m = e.match(te)?.[1];
|
|
26
|
+
if (m) return { kind: N(a(m)), assignAt: e.lastIndexOf("=") };
|
|
27
|
+
const p = o.match(ne)?.[1];
|
|
28
|
+
if (p) return { kind: N(a(p)) };
|
|
29
|
+
const C = o.match(se)?.[1], d = C ? a(C) : void 0;
|
|
30
|
+
if (d) return { kind: N(W(d)) };
|
|
31
|
+
}, D = (t, n) => {
|
|
32
|
+
for (const r of t.matchAll(F)) {
|
|
33
|
+
const s = r.index + r[0].length;
|
|
34
|
+
if (n <= r.index) break;
|
|
35
|
+
if (n > s) continue;
|
|
36
|
+
const e = r[0], o = e[0];
|
|
37
|
+
if (!`"'`.includes(o) || e.startsWith(o.repeat(3)) || e.includes(`
|
|
38
|
+
`)) return;
|
|
39
|
+
const i = e.length > 1 && e.endsWith(o) && !e.endsWith("\\" + o);
|
|
40
|
+
return i && n === s ? void 0 : { start: r.index, end: s, quote: o, closed: i, body: e.slice(1, i ? -1 : void 0) };
|
|
41
|
+
}
|
|
42
|
+
}, oe = (t, n) => {
|
|
43
|
+
const r = t.replace(/\\.|"/g, (s) => s === "\\'" ? "'" : s === '"' ? n === '"' ? s : '\\"' : s);
|
|
44
|
+
try {
|
|
45
|
+
return JSON.parse('"' + r + '"');
|
|
46
|
+
} catch {
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
}, ie = (t, n) => n === "'" ? `'${t.replace(/\\/g, "\\\\").replace(/'/g, "\\'")}'` : JSON.stringify(t), ae = (t, n, r, s) => {
|
|
50
|
+
const e = D(t, n);
|
|
51
|
+
let o = n, i = n, a = '"', u = "";
|
|
52
|
+
if (e)
|
|
53
|
+
({ start: o, end: i, quote: a } = e), u = t.slice(o + 1, n);
|
|
54
|
+
else {
|
|
55
|
+
const g = t.slice(0, n).match(/[\w-]*$/)[0];
|
|
56
|
+
o = n - g.length, i = n + t.slice(n).match(/^[\w-]*/)[0].length, u = g;
|
|
57
|
+
}
|
|
58
|
+
const { kind: m, assignAt: p } = z(t, o, i, r) ?? {}, C = p ?? o, d = t.slice(C, n - u.length), c = [];
|
|
59
|
+
for (const { value: g, name: l, id: f } of m ? M(s, m) : []) {
|
|
60
|
+
const v = [l, g].find((A) => A.toLowerCase().includes(u.toLowerCase()));
|
|
61
|
+
v !== void 0 && c.push({
|
|
62
|
+
label: l,
|
|
63
|
+
detail: l === g ? f : `${g}`,
|
|
64
|
+
insertText: (p === void 0 ? "" : "== ") + ie(g, a),
|
|
65
|
+
filterText: d + v,
|
|
66
|
+
start: C,
|
|
67
|
+
end: i
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
return { suggestions: c, inLiteral: !!e };
|
|
71
|
+
}, ce = (t, n, r, s) => {
|
|
72
|
+
const e = D(t, n);
|
|
73
|
+
if (!e?.closed) return;
|
|
74
|
+
const o = re(t, e.start, e.end, r), i = o && oe(e.body, e.quote), a = i === void 0 ? void 0 : M(s, o).find((u) => u.value === i);
|
|
75
|
+
if (a) return { subject: a, start: e.start, end: e.end };
|
|
76
|
+
}, b = "kong-plugin-cel", O = `${b}.suggestArguments`, H = (t, n) => {
|
|
77
|
+
const r = t.slice(0, n - 1);
|
|
78
|
+
if (K(r)) return;
|
|
79
|
+
const s = r.match(/(?:\b([a-zA-Z_]\w*(?:\s*\.\s*[a-zA-Z_]\w*)*)\s*\.\s*)?([a-zA-Z_]\w*)?$/);
|
|
80
|
+
if (s)
|
|
81
|
+
return { receiver: s[1]?.replace(/\s+/g, "") ?? "", prefix: s[2] ?? "", startColumn: n - (s[2]?.length ?? 0) };
|
|
82
|
+
}, le = (t, n, r = {}) => {
|
|
83
|
+
const s = t.slice(t.lastIndexOf(`
|
|
84
|
+
`) + 1), e = H(s, s.length + 1);
|
|
85
|
+
if (!e) return [];
|
|
86
|
+
const i = [...k(t)].reverse().find((c) => c.name);
|
|
87
|
+
if (i && V.has(i.name) && i.method && i.argument === 0) return [];
|
|
88
|
+
const a = i?.name === "has" && !i.receiver, u = _(t, n), m = (c, g, l, f, v) => ({
|
|
89
|
+
label: c,
|
|
90
|
+
kind: l,
|
|
91
|
+
detail: g.kind === "record" && g.namespace ? f : `${f} · ${R(g)}`,
|
|
92
|
+
documentation: v ? I(f) : void 0
|
|
93
|
+
});
|
|
94
|
+
if (!e.receiver) {
|
|
95
|
+
const c = /* @__PURE__ */ new Map();
|
|
96
|
+
for (const [l, f] of Object.entries(q(n))) c.set(l, [f, !0]);
|
|
97
|
+
for (const [l, f] of u) c.set(l, [f, !1]);
|
|
98
|
+
const g = [...c].filter(([, [l]]) => !a || B(l)).map(([l, [f, v]]) => m(l, f, "variable", l, v));
|
|
99
|
+
if (!a)
|
|
100
|
+
for (const l of x(void 0, n)) g.push({ label: l.name, kind: "function", detail: l.signature, callable: l });
|
|
101
|
+
return g;
|
|
102
|
+
}
|
|
103
|
+
const p = E(e.receiver, u, n);
|
|
104
|
+
if (!p) return [];
|
|
105
|
+
const C = !u.has(e.receiver.split(".")[0]), d = U(p, a).map(([c, g]) => m(c, g, "field", `${e.receiver}.${c}`, C));
|
|
106
|
+
if (p.kind === "map" && p.metadata)
|
|
107
|
+
for (const { key: c, types: g } of Y(r))
|
|
108
|
+
d.push({ label: c, kind: "field", detail: `${e.receiver}.${c} · ${g.join(" | ")}` });
|
|
109
|
+
if (!a)
|
|
110
|
+
for (const c of x(p)) d.push({ label: c.name, kind: "function", detail: c.signature, callable: c });
|
|
111
|
+
return d;
|
|
112
|
+
}, ue = (t, n, r) => {
|
|
113
|
+
const s = J(t), e = n - s.slice(0, n).match(/\w*$/)[0].length, o = n + s.slice(n).match(/^\w*/)[0].length, i = s.slice(e, o);
|
|
114
|
+
if (!/^[A-Za-z_]\w*$/.test(i)) return;
|
|
115
|
+
const a = s.slice(0, e), u = s.slice(o), m = a.match(new RegExp("(?<![\\w.])([A-Za-z_]\\w*(?:\\s*\\.\\s*[A-Za-z_]\\w*)*)\\s*\\.\\s*$"))?.[1]?.replace(/\s+/g, "") ?? "";
|
|
116
|
+
if (/\.\s*$/.test(a) && !m) return;
|
|
117
|
+
const p = /\.\s*\w+\s*\(\s*$/.test(a) && /^\s*,/.test(u), C = _(p ? s.slice(0, o + u.indexOf(",") + 1) : a, r);
|
|
118
|
+
if (/^\s*\(/.test(u)) {
|
|
119
|
+
const f = m ? E(m, C, r) : void 0;
|
|
120
|
+
if (m && !f) return;
|
|
121
|
+
const v = x(f, r).find((A) => A.name === i);
|
|
122
|
+
return v && { start: e, end: o, title: v.signature, description: v.description };
|
|
123
|
+
}
|
|
124
|
+
const d = m ? `${m}.${i}` : i, c = E(d, C, r);
|
|
125
|
+
if (!c) return;
|
|
126
|
+
const g = C.has(d.split(".")[0]), l = c.kind === "record" && c.namespace;
|
|
127
|
+
return {
|
|
128
|
+
start: e,
|
|
129
|
+
end: o,
|
|
130
|
+
title: l ? d : `${d}: ${R(c)}`,
|
|
131
|
+
description: g ? void 0 : I(d)
|
|
132
|
+
};
|
|
133
|
+
}, ge = (t, n) => {
|
|
134
|
+
const r = [...k(t)].reverse().find((o) => o.name);
|
|
135
|
+
if (!r) return;
|
|
136
|
+
const s = r.receiver ? E(r.receiver, _(t.slice(0, r.start), n), n) : void 0;
|
|
137
|
+
if (r.receiver && !s) return;
|
|
138
|
+
const e = x(s, n).find((o) => o.name === r.name);
|
|
139
|
+
if (e) return { callable: e, argument: r.argument };
|
|
140
|
+
}, $ = /* @__PURE__ */ new Map();
|
|
141
|
+
let S = [], P = !1;
|
|
142
|
+
const me = () => {
|
|
143
|
+
P || (h.languages.register({ id: b }), P = !0), S = [
|
|
144
|
+
h.editor.registerCommand(O, (t, n) => {
|
|
145
|
+
const r = $.get(n)?.instance;
|
|
146
|
+
r?.trigger(b, "editor.action.triggerParameterHints", {}), r?.trigger(b, "editor.action.triggerSuggest", {});
|
|
147
|
+
}),
|
|
148
|
+
h.languages.setLanguageConfiguration(b, {
|
|
149
|
+
comments: { lineComment: "//" },
|
|
150
|
+
brackets: [["(", ")"], ["[", "]"], ["{", "}"]],
|
|
151
|
+
autoClosingPairs: [
|
|
152
|
+
{ open: "(", close: ")" },
|
|
153
|
+
{ open: "[", close: "]" },
|
|
154
|
+
{ open: "{", close: "}" },
|
|
155
|
+
{ open: '"', close: '"', notIn: ["string", "comment"] },
|
|
156
|
+
{ open: "'", close: "'", notIn: ["string", "comment"] }
|
|
157
|
+
]
|
|
158
|
+
}),
|
|
159
|
+
h.languages.setMonarchTokensProvider(b, {
|
|
160
|
+
tokenizer: {
|
|
161
|
+
root: [
|
|
162
|
+
[/\/\/.*$/, "comment"],
|
|
163
|
+
[/"(?:[^"\\]|\\.)*"|'(?:[^'\\]|\\.)*'/, "string"],
|
|
164
|
+
[/\b(?:true|false|null|in)\b/, "keyword"],
|
|
165
|
+
[/\b\d+(?:\.\d+)?\b/, "number"],
|
|
166
|
+
[/[a-zA-Z_]\w*/, "identifier"],
|
|
167
|
+
[/[=!<>|&+*/%?:-]+/, "operator"],
|
|
168
|
+
[/[()[\]{}]/, "@brackets"]
|
|
169
|
+
]
|
|
170
|
+
}
|
|
171
|
+
}),
|
|
172
|
+
h.languages.registerCompletionItemProvider(b, {
|
|
173
|
+
// `=` and space open record values right after `consumer.id ==` or `consumer.id = `.
|
|
174
|
+
triggerCharacters: [".", "(", '"', "'", "=", " "],
|
|
175
|
+
provideCompletionItems(t, n, r) {
|
|
176
|
+
const s = $.get(t);
|
|
177
|
+
if (!s) return { suggestions: [] };
|
|
178
|
+
const e = t.getValue(), o = t.getOffsetAt(n), i = ae(e, o, s.scope(), s.subjects()), a = i.suggestions.map(({ label: l, detail: f, insertText: v, filterText: A, start: w, end: Z }, G) => {
|
|
179
|
+
const y = t.getPositionAt(w), T = t.getPositionAt(Z);
|
|
180
|
+
return {
|
|
181
|
+
label: l,
|
|
182
|
+
detail: f,
|
|
183
|
+
insertText: v,
|
|
184
|
+
filterText: A,
|
|
185
|
+
kind: h.languages.CompletionItemKind.Value,
|
|
186
|
+
// Values first, in the list order.
|
|
187
|
+
sortText: `0-0-${String(G).padStart(6, "0")}`,
|
|
188
|
+
range: { startLineNumber: y.lineNumber, startColumn: y.column, endLineNumber: T.lineNumber, endColumn: T.column }
|
|
189
|
+
};
|
|
190
|
+
}), u = r.triggerKind === h.languages.CompletionTriggerKind.TriggerCharacter && (r.triggerCharacter === "=" || r.triggerCharacter === " ");
|
|
191
|
+
if (i.inLiteral || u) return { suggestions: a, incomplete: !0 };
|
|
192
|
+
const m = t.getLineContent(n.lineNumber), p = H(m, n.column);
|
|
193
|
+
if (!p) return { suggestions: a };
|
|
194
|
+
const C = {
|
|
195
|
+
startLineNumber: n.lineNumber,
|
|
196
|
+
endLineNumber: n.lineNumber,
|
|
197
|
+
startColumn: p.startColumn,
|
|
198
|
+
endColumn: t.getWordAtPosition(n)?.endColumn ?? n.column
|
|
199
|
+
}, d = /^\s*\(/.test(m.slice(C.endColumn - 1)), c = e.slice(0, o), g = le(c, s.scope(), s.subjects()).map(({ label: l, kind: f, detail: v, documentation: A, callable: w }) => ({
|
|
200
|
+
label: l,
|
|
201
|
+
detail: v,
|
|
202
|
+
range: C,
|
|
203
|
+
documentation: A ? { value: A } : void 0,
|
|
204
|
+
kind: f === "function" ? h.languages.CompletionItemKind.Function : f === "field" ? h.languages.CompletionItemKind.Field : h.languages.CompletionItemKind.Variable,
|
|
205
|
+
// Fields and variables first, then functions.
|
|
206
|
+
sortText: `${f === "function" ? 1 : 0}-${l}`,
|
|
207
|
+
insertText: w && !d ? w.insertText : l,
|
|
208
|
+
insertTextRules: w ? h.languages.CompletionItemInsertTextRule.InsertAsSnippet : void 0,
|
|
209
|
+
command: w?.name === "has" && !d ? { id: O, title: "has(field)", arguments: [t] } : void 0
|
|
210
|
+
}));
|
|
211
|
+
return { suggestions: [...a, ...g], incomplete: !0 };
|
|
212
|
+
}
|
|
213
|
+
}),
|
|
214
|
+
h.languages.registerHoverProvider(b, {
|
|
215
|
+
provideHover(t, n) {
|
|
216
|
+
const r = $.get(t);
|
|
217
|
+
if (!r) return;
|
|
218
|
+
const s = t.getValue(), e = t.getOffsetAt(n), o = (p, C) => {
|
|
219
|
+
const d = t.getPositionAt(p), c = t.getPositionAt(C);
|
|
220
|
+
return { startLineNumber: d.lineNumber, startColumn: d.column, endLineNumber: c.lineNumber, endColumn: c.column };
|
|
221
|
+
}, i = ue(s, e, r.scope());
|
|
222
|
+
if (i)
|
|
223
|
+
return {
|
|
224
|
+
range: o(i.start, i.end),
|
|
225
|
+
contents: [{ value: "```\n" + i.title + "\n```" }, ...i.description ? [{ value: i.description }] : []]
|
|
226
|
+
};
|
|
227
|
+
const a = ce(s, e, r.scope(), r.subjects());
|
|
228
|
+
if (!a) return;
|
|
229
|
+
const u = t.getPositionAt(a.start), m = t.getPositionAt(a.end);
|
|
230
|
+
return {
|
|
231
|
+
range: { startLineNumber: u.lineNumber, startColumn: u.column, endLineNumber: m.lineNumber, endColumn: m.column },
|
|
232
|
+
// Indent each line so Markdown renders API values as literal text.
|
|
233
|
+
contents: [{ value: r.formatSubject(a.subject).replace(/^/gm, " ") }]
|
|
234
|
+
};
|
|
235
|
+
}
|
|
236
|
+
}),
|
|
237
|
+
h.languages.registerSignatureHelpProvider(b, {
|
|
238
|
+
signatureHelpTriggerCharacters: ["(", ","],
|
|
239
|
+
signatureHelpRetriggerCharacters: [")"],
|
|
240
|
+
provideSignatureHelp(t, n) {
|
|
241
|
+
const r = $.get(t);
|
|
242
|
+
if (!r) return;
|
|
243
|
+
const s = ge(t.getValue().slice(0, t.getOffsetAt(n)), r.scope());
|
|
244
|
+
if (!s) return;
|
|
245
|
+
const { callable: e, argument: o } = s;
|
|
246
|
+
return {
|
|
247
|
+
value: {
|
|
248
|
+
signatures: (e.alternateParameters ? [e.parameters, e.alternateParameters] : [e.parameters]).map((a) => ({
|
|
249
|
+
label: `${e.name}(${a.join(", ")})`,
|
|
250
|
+
parameters: a.map((u) => ({ label: u }))
|
|
251
|
+
})),
|
|
252
|
+
activeSignature: e.alternateParameters && o >= e.parameters.length ? 1 : 0,
|
|
253
|
+
activeParameter: o
|
|
254
|
+
},
|
|
255
|
+
dispose() {
|
|
256
|
+
}
|
|
257
|
+
};
|
|
258
|
+
}
|
|
259
|
+
})
|
|
260
|
+
];
|
|
261
|
+
}, fe = (t, n) => {
|
|
262
|
+
const r = t.getModel();
|
|
263
|
+
if (!r) return { dispose() {
|
|
264
|
+
} };
|
|
265
|
+
S.length || me(), $.set(r, { ...n, instance: t }), h.editor.setModelLanguage(r, b);
|
|
266
|
+
let s = !1;
|
|
267
|
+
const e = () => {
|
|
268
|
+
s || (s = !0, o.dispose(), $.delete(r), $.size || (S.forEach((i) => i.dispose()), S = []));
|
|
269
|
+
}, o = r.onWillDispose(e);
|
|
270
|
+
return { dispose: e };
|
|
271
|
+
};
|
|
272
|
+
export {
|
|
273
|
+
b as CEL_LANGUAGE_ID,
|
|
274
|
+
fe as attachCelLanguage,
|
|
275
|
+
H as getCelCompletionContext,
|
|
276
|
+
ue as getCelHover,
|
|
277
|
+
ge as getCelSignature,
|
|
278
|
+
le as getCelSuggestions
|
|
279
|
+
};
|