@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.
Files changed (31) hide show
  1. package/dist/cel-language-DmYQpIfl.js +279 -0
  2. package/dist/entities-plugins.es.js +48 -32627
  3. package/dist/entities-plugins.umd.js +136 -134
  4. package/dist/freeform/style.css +1 -1
  5. package/dist/index-B9021xAO.js +32993 -0
  6. package/dist/style.css +1 -1
  7. package/dist/types/components/PluginEntityForm.vue.d.ts.map +1 -1
  8. package/dist/types/components/free-form/cel/CelInput.vue.d.ts +38 -0
  9. package/dist/types/components/free-form/cel/CelInput.vue.d.ts.map +1 -0
  10. package/dist/types/components/free-form/cel/cel-catalog.d.ts +92 -0
  11. package/dist/types/components/free-form/cel/cel-catalog.d.ts.map +1 -0
  12. package/dist/types/components/free-form/cel/cel-hints.d.ts +34 -0
  13. package/dist/types/components/free-form/cel/cel-hints.d.ts.map +1 -0
  14. package/dist/types/components/free-form/cel/cel-language.d.ts +49 -0
  15. package/dist/types/components/free-form/cel/cel-language.d.ts.map +1 -0
  16. package/dist/types/components/free-form/cel/cel-subjects.d.ts +67 -0
  17. package/dist/types/components/free-form/cel/cel-subjects.d.ts.map +1 -0
  18. package/dist/types/components/free-form/cel/cel-tokens.d.ts +6 -0
  19. package/dist/types/components/free-form/cel/cel-tokens.d.ts.map +1 -0
  20. package/dist/types/components/free-form/components/AdvancedFields.vue.d.ts.map +1 -1
  21. package/dist/types/components/free-form/components/ConditionField.vue.d.ts.map +1 -1
  22. package/dist/types/components/free-form/components/PluginConfigurationForm.vue.d.ts.map +1 -1
  23. package/dist/types/components/free-form/plugins/acl/ACLModeCard.vue.d.ts.map +1 -1
  24. package/dist/types/components/free-form/plugins/openid-connect/PrincipalLookupSettings.vue.d.ts +2 -2
  25. package/dist/types/components/free-form/plugins/openid-connect/PrincipalLookupSettings.vue.d.ts.map +1 -1
  26. package/dist/types/components/free-form/plugins/openid-connect/PrincipalsSection.vue.d.ts.map +1 -1
  27. package/dist/types/constants/index.d.ts +19 -1
  28. package/dist/types/constants/index.d.ts.map +1 -1
  29. package/dist/types/types/plugin-form.d.ts +20 -0
  30. package/dist/types/types/plugin-form.d.ts.map +1 -1
  31. 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
+ };