@camunda/ccma-shared-types 0.2.0 → 0.5.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/_tests/constants/failoverRegionPairs.const.spec.d.ts +1 -0
- package/dist/_tests/search/compiler.spec.d.ts +1 -0
- package/dist/_tests/search/parser.spec.d.ts +1 -0
- package/dist/_tests/search/registry.spec.d.ts +1 -0
- package/dist/_tests/types/ClusterPlanFields.type.spec.d.ts +1 -0
- package/dist/constants/failoverRegionPairs.const.d.ts +18 -0
- package/dist/constants/failoverRegionPairs.const.js +22 -0
- package/dist/constants/failoverRegionPairs.const.js.map +7 -0
- package/dist/constants/misc.const.d.ts +7 -0
- package/dist/constants/misc.const.js +2 -0
- package/dist/constants/misc.const.js.map +2 -2
- package/dist/dtos/Backup.dto.d.ts +5 -0
- package/dist/dtos/ClusterPlan.dto.d.ts +5 -0
- package/dist/dtos/ClusterPlanType.dto.d.ts +6 -0
- package/dist/dtos/ClusterSpecHistory.dto.d.ts +24 -0
- package/dist/dtos/ClusterSpecHistory.dto.js +1 -0
- package/dist/dtos/ClusterSpecHistory.dto.js.map +7 -0
- package/dist/dtos/CommonCluster.dto.d.ts +71 -6
- package/dist/dtos/ConsoleCluster.dto.d.ts +7 -0
- package/dist/dtos/ControlV2.dto.d.ts +121 -7
- package/dist/dtos/ExternalWebapp.dto.d.ts +89 -0
- package/dist/dtos/ExternalWebapp.dto.js +1 -0
- package/dist/dtos/ExternalWebapp.dto.js.map +7 -0
- package/dist/dtos/K8sContext.dto.d.ts +7 -0
- package/dist/dtos/Organization.dto.d.ts +2 -0
- package/dist/dtos/Organization.dto.js.map +1 -1
- package/dist/dtos/ReleaseTrainSanity.dto.d.ts +51 -0
- package/dist/dtos/ReleaseTrainSanity.dto.js +1 -0
- package/dist/dtos/ReleaseTrainSanity.dto.js.map +7 -0
- package/dist/dtos/SalesPlan.dto.js +4 -2
- package/dist/dtos/SalesPlan.dto.js.map +2 -2
- package/dist/dtos/StorybookConfig.dto.d.ts +39 -0
- package/dist/dtos/StorybookConfig.dto.js +1 -0
- package/dist/dtos/StorybookConfig.dto.js.map +7 -0
- package/dist/enums/AuditEntity.enum.d.ts +1 -0
- package/dist/enums/AuditEntity.enum.js +1 -0
- package/dist/enums/AuditEntity.enum.js.map +2 -2
- package/dist/enums/OrganizationRole.enum.d.ts +1 -2
- package/dist/enums/OrganizationRole.enum.js +7 -2
- package/dist/enums/OrganizationRole.enum.js.map +2 -2
- package/dist/enums/SystemAuditEntity.enum.d.ts +7 -2
- package/dist/enums/SystemAuditEntity.enum.js +5 -0
- package/dist/enums/SystemAuditEntity.enum.js.map +2 -2
- package/dist/index.d.ts +13 -5
- package/dist/index.js +39 -17
- package/dist/index.js.map +2 -2
- package/dist/permissions/combo.js +3 -0
- package/dist/permissions/combo.js.map +2 -2
- package/dist/permissions/console.permissions.d.ts +2 -0
- package/dist/permissions/console.permissions.js +7 -0
- package/dist/permissions/console.permissions.js.map +2 -2
- package/dist/permissions/profile.permissions.d.ts +14 -8
- package/dist/permissions/profile.permissions.js +16 -123
- package/dist/permissions/profile.permissions.js.map +2 -2
- package/dist/search/ast.d.ts +52 -0
- package/dist/search/ast.js +18 -0
- package/dist/search/ast.js.map +7 -0
- package/dist/search/cluster-search-fields.d.ts +11 -0
- package/dist/search/cluster-search-fields.js +136 -0
- package/dist/search/cluster-search-fields.js.map +7 -0
- package/dist/search/compiler.d.ts +48 -0
- package/dist/search/compiler.js +217 -0
- package/dist/search/compiler.js.map +7 -0
- package/dist/search/fields.d.ts +24 -0
- package/dist/search/fields.js +5 -0
- package/dist/search/fields.js.map +7 -0
- package/dist/search/index.d.ts +6 -0
- package/dist/search/index.js +33 -0
- package/dist/search/index.js.map +7 -0
- package/dist/search/organization-search-fields.d.ts +9 -0
- package/dist/search/organization-search-fields.js +50 -0
- package/dist/search/organization-search-fields.js.map +7 -0
- package/dist/search/parser.d.ts +7 -0
- package/dist/search/parser.js +324 -0
- package/dist/search/parser.js.map +7 -0
- package/dist/types/ClusterModification.type.d.ts +1 -0
- package/dist/types/ClusterPlanFields.type.d.ts +24 -0
- package/dist/types/ClusterPlanFields.type.js +591 -0
- package/dist/types/ClusterPlanFields.type.js.map +7 -0
- package/dist/types/ClusterPlanModification.type.d.ts +1 -0
- package/dist/types/EnterpriseIncludingValueMetrics.type.d.ts +1 -0
- package/dist/types/HdpTenantUsage.type.d.ts +4 -0
- package/dist/types/HdpTenantUsage.type.js +1 -0
- package/dist/types/HdpTenantUsage.type.js.map +7 -0
- package/package.json +2 -2
|
@@ -1,92 +1,5 @@
|
|
|
1
|
-
const CLOUD_TEAM_EMAILS = [
|
|
2
|
-
"adam.urban@camunda.com",
|
|
3
|
-
"collin.raddatz@camunda.com",
|
|
4
|
-
"tim.schuppener@camunda.com"
|
|
5
|
-
];
|
|
6
|
-
const LIMIT_EXTENDERS = [
|
|
7
|
-
"william.vonalt@camunda.com",
|
|
8
|
-
"victor.grund@camunda.com",
|
|
9
|
-
"ragnar.nevries@camunda.com",
|
|
10
|
-
"robert.emsbach@camunda.com",
|
|
11
|
-
"jared.mcmahon@camunda.com"
|
|
12
|
-
];
|
|
13
|
-
const SRE_TEAM_EMAILS = [
|
|
14
|
-
"jonathan.ballet@camunda.com",
|
|
15
|
-
"thanasis.petrovas@camunda.com",
|
|
16
|
-
"thomas.polnik@camunda.com"
|
|
17
|
-
];
|
|
18
|
-
const PLATFORM_SM_EMAILS = [
|
|
19
|
-
"immanuel.monma@camunda.com",
|
|
20
|
-
"jesse.simpson@camunda.com",
|
|
21
|
-
"hamza.masood@camunda.com",
|
|
22
|
-
"lars.lange@camunda.com",
|
|
23
|
-
"leo.journel@camunda.com",
|
|
24
|
-
"balazs.kenez@camunda.com"
|
|
25
|
-
];
|
|
26
|
-
const SUPPORT_MANAGERS_EMAILS = [
|
|
27
|
-
"garima.yadav@camunda.com",
|
|
28
|
-
"jeffrey.stokes@camunda.com",
|
|
29
|
-
"alexandra.corremans@camunda.com",
|
|
30
|
-
"chris.campbell@camunda.com"
|
|
31
|
-
];
|
|
32
|
-
const C8_ENGINEERING_MANAGERS_EMAILS = [
|
|
33
|
-
"sebastian.bathke@camunda.com",
|
|
34
|
-
"catalina.moisuc@camunda.com",
|
|
35
|
-
"immanuel.monma@camunda.com",
|
|
36
|
-
"joshua.windels@camunda.com",
|
|
37
|
-
"marcos.vieira@camunda.com",
|
|
38
|
-
"maximilian.trumpf@camunda.com",
|
|
39
|
-
"simon.buettner@camunda.com",
|
|
40
|
-
// schoetti is also some sort of engineering manager
|
|
41
|
-
"michael.schoettes@camunda.com",
|
|
42
|
-
"tassilo.weidner@camunda.com",
|
|
43
|
-
"nicolas.pepin-perreault@camunda.com",
|
|
44
|
-
"wolfgang.amann@camunda.com",
|
|
45
|
-
"mathieu.stennier@camunda.com",
|
|
46
|
-
"jason.hunter@camunda.com",
|
|
47
|
-
"maxim.danilov@camunda.com",
|
|
48
|
-
"stephan.epping@camunda.com",
|
|
49
|
-
"simon.zengerling@camunda.com",
|
|
50
|
-
"shay.matasaro@camunda.com"
|
|
51
|
-
];
|
|
52
|
-
const CONSULTING_MANAGER_EMAILS = [
|
|
53
|
-
"benjamin.hoffmann@camunda.com",
|
|
54
|
-
"chandan.dash@camunda.com",
|
|
55
|
-
"darren.devine@camunda.com",
|
|
56
|
-
"hurshid.kadirov@camunda.com",
|
|
57
|
-
"ivan.jovic@camunda.com",
|
|
58
|
-
"michael.ferber@camunda.com",
|
|
59
|
-
"ragnar.nevries@camunda.com",
|
|
60
|
-
"norbert.kuchenmeister@camunda.com",
|
|
61
|
-
"robert.emsbach@camunda.com",
|
|
62
|
-
"victor.grund@camunda.com"
|
|
63
|
-
];
|
|
64
|
-
const CSM_MANAGER_EMAIL = [
|
|
65
|
-
"aaron.laye@camunda.com",
|
|
66
|
-
"andreas.tollschein@camunda.com",
|
|
67
|
-
"betsy.burt@camunda.com",
|
|
68
|
-
"leona.schlosser@camunda.com",
|
|
69
|
-
"yulia.sinyanskaya@camunda.com",
|
|
70
|
-
"agnes.kelemen@camunda.com",
|
|
71
|
-
"thomas.schulz@camunda.com",
|
|
72
|
-
"shadia.jubril@camunda.com",
|
|
73
|
-
"kaitlin.leighton@camunda.com",
|
|
74
|
-
"ryan.warner@camunda.com",
|
|
75
|
-
"manjula.kularathne@camunda.com"
|
|
76
|
-
];
|
|
77
|
-
const ADR_MANAGER_EMAIL = ["jasmin.morfin-davila@camunda.com"];
|
|
78
|
-
const PDF_WATERMARK_EMAILS = ["eyal.marantenboim@camunda.com"];
|
|
79
1
|
const PROFILES = {
|
|
80
2
|
readOnly: {
|
|
81
|
-
allowed: [
|
|
82
|
-
...CLOUD_TEAM_EMAILS,
|
|
83
|
-
...SUPPORT_MANAGERS_EMAILS,
|
|
84
|
-
...C8_ENGINEERING_MANAGERS_EMAILS,
|
|
85
|
-
...CONSULTING_MANAGER_EMAILS,
|
|
86
|
-
...SRE_TEAM_EMAILS,
|
|
87
|
-
...CSM_MANAGER_EMAIL,
|
|
88
|
-
"eric.lundberg@camunda.com"
|
|
89
|
-
],
|
|
90
3
|
rolesToAssign: ["accounts:read", "console:admin:readonly"],
|
|
91
4
|
email: {
|
|
92
5
|
handbookPages: [
|
|
@@ -95,7 +8,6 @@ const PROFILES = {
|
|
|
95
8
|
}
|
|
96
9
|
},
|
|
97
10
|
supportEngineer: {
|
|
98
|
-
allowed: [...CLOUD_TEAM_EMAILS, ...SUPPORT_MANAGERS_EMAILS],
|
|
99
11
|
rolesToAssign: [
|
|
100
12
|
"accounts:read",
|
|
101
13
|
"accounts:connections:create",
|
|
@@ -110,7 +22,6 @@ const PROFILES = {
|
|
|
110
22
|
}
|
|
111
23
|
},
|
|
112
24
|
ssoAdmin: {
|
|
113
|
-
allowed: [...CLOUD_TEAM_EMAILS, ...SUPPORT_MANAGERS_EMAILS],
|
|
114
25
|
rolesToAssign: [
|
|
115
26
|
"accounts:read",
|
|
116
27
|
"accounts:connections:create",
|
|
@@ -125,13 +36,22 @@ const PROFILES = {
|
|
|
125
36
|
]
|
|
126
37
|
}
|
|
127
38
|
},
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
39
|
+
tam: {
|
|
40
|
+
rolesToAssign: [
|
|
41
|
+
"support:agent",
|
|
42
|
+
"accounts:trialExtender",
|
|
43
|
+
"accounts:limitExtender",
|
|
44
|
+
"accounts:enterpriseAdmin",
|
|
45
|
+
"accounts:read",
|
|
46
|
+
"console:admin:readonly"
|
|
134
47
|
],
|
|
48
|
+
email: {
|
|
49
|
+
handbookPages: [
|
|
50
|
+
"https://confluence.camunda.com/display/HAN/Access+to+a+customers+Organization+on+C8+SaaS"
|
|
51
|
+
]
|
|
52
|
+
}
|
|
53
|
+
},
|
|
54
|
+
supportAgent: {
|
|
135
55
|
rolesToAssign: ["support:agent"],
|
|
136
56
|
email: {
|
|
137
57
|
handbookPages: [
|
|
@@ -140,11 +60,6 @@ const PROFILES = {
|
|
|
140
60
|
}
|
|
141
61
|
},
|
|
142
62
|
clusterUpdateSupportEngineer: {
|
|
143
|
-
allowed: [
|
|
144
|
-
...CLOUD_TEAM_EMAILS,
|
|
145
|
-
...SUPPORT_MANAGERS_EMAILS,
|
|
146
|
-
...C8_ENGINEERING_MANAGERS_EMAILS
|
|
147
|
-
],
|
|
148
63
|
rolesToAssign: [
|
|
149
64
|
"accounts:clusterUpdates",
|
|
150
65
|
"support:agent",
|
|
@@ -157,7 +72,6 @@ const PROFILES = {
|
|
|
157
72
|
}
|
|
158
73
|
},
|
|
159
74
|
c8ReleaseManager: {
|
|
160
|
-
allowed: [...CLOUD_TEAM_EMAILS, ...C8_ENGINEERING_MANAGERS_EMAILS],
|
|
161
75
|
rolesToAssign: [
|
|
162
76
|
"console:C8ReleaseManager",
|
|
163
77
|
"accounts:read",
|
|
@@ -170,7 +84,6 @@ const PROFILES = {
|
|
|
170
84
|
}
|
|
171
85
|
},
|
|
172
86
|
incidentEngineer: {
|
|
173
|
-
allowed: [...CLOUD_TEAM_EMAILS, ...C8_ENGINEERING_MANAGERS_EMAILS],
|
|
174
87
|
rolesToAssign: [
|
|
175
88
|
"accounts:read",
|
|
176
89
|
"support:agent",
|
|
@@ -183,7 +96,6 @@ const PROFILES = {
|
|
|
183
96
|
}
|
|
184
97
|
},
|
|
185
98
|
consulting: {
|
|
186
|
-
allowed: [...CLOUD_TEAM_EMAILS, ...CONSULTING_MANAGER_EMAILS],
|
|
187
99
|
rolesToAssign: [
|
|
188
100
|
"accounts:read",
|
|
189
101
|
"console:admin:readonly",
|
|
@@ -199,7 +111,6 @@ const PROFILES = {
|
|
|
199
111
|
}
|
|
200
112
|
},
|
|
201
113
|
csm: {
|
|
202
|
-
allowed: [...CLOUD_TEAM_EMAILS, ...CSM_MANAGER_EMAIL],
|
|
203
114
|
rolesToAssign: [
|
|
204
115
|
"accounts:enterpriseAdmin",
|
|
205
116
|
"accounts:read",
|
|
@@ -214,7 +125,6 @@ const PROFILES = {
|
|
|
214
125
|
}
|
|
215
126
|
},
|
|
216
127
|
csmOffboard: {
|
|
217
|
-
allowed: [...CLOUD_TEAM_EMAILS, ...CSM_MANAGER_EMAIL],
|
|
218
128
|
rolesToAssign: ["accounts:enterpriseOffboarding", "accounts:read"],
|
|
219
129
|
email: {
|
|
220
130
|
handbookPages: [
|
|
@@ -223,7 +133,6 @@ const PROFILES = {
|
|
|
223
133
|
}
|
|
224
134
|
},
|
|
225
135
|
adr: {
|
|
226
|
-
allowed: [...ADR_MANAGER_EMAIL, "javier.garcia-alzorriz@camunda.com"],
|
|
227
136
|
rolesToAssign: ["accounts:trialExtender", "accounts:read"],
|
|
228
137
|
email: {
|
|
229
138
|
handbookPages: [
|
|
@@ -233,11 +142,6 @@ const PROFILES = {
|
|
|
233
142
|
}
|
|
234
143
|
},
|
|
235
144
|
trialExtender: {
|
|
236
|
-
allowed: [
|
|
237
|
-
...CLOUD_TEAM_EMAILS,
|
|
238
|
-
...LIMIT_EXTENDERS,
|
|
239
|
-
"rory.tettey@camunda.com"
|
|
240
|
-
],
|
|
241
145
|
rolesToAssign: ["accounts:trialExtender", "accounts:read"],
|
|
242
146
|
email: {
|
|
243
147
|
handbookPages: [
|
|
@@ -247,7 +151,6 @@ const PROFILES = {
|
|
|
247
151
|
}
|
|
248
152
|
},
|
|
249
153
|
limitExtender: {
|
|
250
|
-
allowed: [...CLOUD_TEAM_EMAILS, ...LIMIT_EXTENDERS],
|
|
251
154
|
rolesToAssign: ["accounts:limitExtender", "accounts:read"],
|
|
252
155
|
email: {
|
|
253
156
|
handbookPages: [
|
|
@@ -257,7 +160,6 @@ const PROFILES = {
|
|
|
257
160
|
}
|
|
258
161
|
},
|
|
259
162
|
workshopCreator: {
|
|
260
|
-
allowed: [...CLOUD_TEAM_EMAILS, "robert.emsbach@camunda.com"],
|
|
261
163
|
rolesToAssign: ["accounts:orgCreator"],
|
|
262
164
|
email: {
|
|
263
165
|
handbookPages: [
|
|
@@ -266,14 +168,12 @@ const PROFILES = {
|
|
|
266
168
|
}
|
|
267
169
|
},
|
|
268
170
|
pdfWatermarkRead: {
|
|
269
|
-
allowed: [...CLOUD_TEAM_EMAILS, ...PDF_WATERMARK_EMAILS],
|
|
270
171
|
rolesToAssign: ["accounts:pdfWatermarkReader"],
|
|
271
172
|
email: {
|
|
272
173
|
handbookPages: []
|
|
273
174
|
}
|
|
274
175
|
},
|
|
275
176
|
pdfWatermarkWrite: {
|
|
276
|
-
allowed: [...CLOUD_TEAM_EMAILS, ...PDF_WATERMARK_EMAILS],
|
|
277
177
|
rolesToAssign: ["accounts:pdfWatermarkWriter"],
|
|
278
178
|
email: {
|
|
279
179
|
handbookPages: []
|
|
@@ -281,13 +181,6 @@ const PROFILES = {
|
|
|
281
181
|
}
|
|
282
182
|
};
|
|
283
183
|
export {
|
|
284
|
-
|
|
285
|
-
CLOUD_TEAM_EMAILS,
|
|
286
|
-
CONSULTING_MANAGER_EMAILS,
|
|
287
|
-
CSM_MANAGER_EMAIL,
|
|
288
|
-
PLATFORM_SM_EMAILS,
|
|
289
|
-
PROFILES,
|
|
290
|
-
SRE_TEAM_EMAILS,
|
|
291
|
-
SUPPORT_MANAGERS_EMAILS
|
|
184
|
+
PROFILES
|
|
292
185
|
};
|
|
293
186
|
//# sourceMappingURL=profile.permissions.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/permissions/profile.permissions.ts"],
|
|
4
|
-
"sourcesContent": ["/*\n * Copyright Camunda Services GmbH and/or licensed to Camunda Services GmbH\n * under one or more contributor license agreements. Licensed under a commercial license.\n * You may not use this file except in compliance with the commercial license.\n */\n\nimport type { Roles } from '../types/Roles.js'\n\nexport const CLOUD_TEAM_EMAILS = [\n 'adam.urban@camunda.com',\n 'collin.raddatz@camunda.com',\n 'tim.schuppener@camunda.com',\n]\nconst LIMIT_EXTENDERS = [\n 'william.vonalt@camunda.com',\n 'victor.grund@camunda.com',\n 'ragnar.nevries@camunda.com',\n 'robert.emsbach@camunda.com',\n 'jared.mcmahon@camunda.com',\n]\nexport const SRE_TEAM_EMAILS = [\n 'jonathan.ballet@camunda.com',\n 'thanasis.petrovas@camunda.com',\n 'thomas.polnik@camunda.com',\n]\nexport const PLATFORM_SM_EMAILS = [\n 'immanuel.monma@camunda.com',\n 'jesse.simpson@camunda.com',\n 'hamza.masood@camunda.com',\n 'lars.lange@camunda.com',\n 'leo.journel@camunda.com',\n 'balazs.kenez@camunda.com',\n]\nexport const SUPPORT_MANAGERS_EMAILS = [\n 'garima.yadav@camunda.com',\n 'jeffrey.stokes@camunda.com',\n 'alexandra.corremans@camunda.com',\n 'chris.campbell@camunda.com',\n]\nexport const C8_ENGINEERING_MANAGERS_EMAILS = [\n 'sebastian.bathke@camunda.com',\n 'catalina.moisuc@camunda.com',\n 'immanuel.monma@camunda.com',\n 'joshua.windels@camunda.com',\n 'marcos.vieira@camunda.com',\n 'maximilian.trumpf@camunda.com',\n 'simon.buettner@camunda.com',\n // schoetti is also some sort of engineering manager\n 'michael.schoettes@camunda.com',\n 'tassilo.weidner@camunda.com',\n 'nicolas.pepin-perreault@camunda.com',\n 'wolfgang.amann@camunda.com',\n 'mathieu.stennier@camunda.com',\n 'jason.hunter@camunda.com',\n 'maxim.danilov@camunda.com',\n 'stephan.epping@camunda.com',\n 'simon.zengerling@camunda.com',\n 'shay.matasaro@camunda.com',\n]\nexport const CONSULTING_MANAGER_EMAILS = [\n 'benjamin.hoffmann@camunda.com',\n 'chandan.dash@camunda.com',\n 'darren.devine@camunda.com',\n 'hurshid.kadirov@camunda.com',\n 'ivan.jovic@camunda.com',\n 'michael.ferber@camunda.com',\n 'ragnar.nevries@camunda.com',\n 'norbert.kuchenmeister@camunda.com',\n 'robert.emsbach@camunda.com',\n 'victor.grund@camunda.com',\n]\nexport const CSM_MANAGER_EMAIL = [\n 'aaron.laye@camunda.com',\n 'andreas.tollschein@camunda.com',\n 'betsy.burt@camunda.com',\n 'leona.schlosser@camunda.com',\n 'yulia.sinyanskaya@camunda.com',\n 'agnes.kelemen@camunda.com',\n 'thomas.schulz@camunda.com',\n 'shadia.jubril@camunda.com',\n 'kaitlin.leighton@camunda.com',\n 'ryan.warner@camunda.com',\n 'manjula.kularathne@camunda.com',\n]\nconst ADR_MANAGER_EMAIL = ['jasmin.morfin-davila@camunda.com']\nconst PDF_WATERMARK_EMAILS = ['eyal.marantenboim@camunda.com']\n\nexport interface OnboardConfig {\n [unit: string]: {\n allowed: string[]\n rolesToAssign: Roles[]\n email: {\n handbookPages: string[]\n }\n }\n}\n\nexport const PROFILES: OnboardConfig = {\n readOnly: {\n allowed: [\n ...CLOUD_TEAM_EMAILS,\n ...SUPPORT_MANAGERS_EMAILS,\n ...C8_ENGINEERING_MANAGERS_EMAILS,\n ...CONSULTING_MANAGER_EMAILS,\n ...SRE_TEAM_EMAILS,\n ...CSM_MANAGER_EMAIL,\n 'eric.lundberg@camunda.com',\n ],\n rolesToAssign: ['accounts:read', 'console:admin:readonly'],\n email: {\n handbookPages: [\n 'https://lamppost.camunda-it.rocks/handbook/#departments/products/engineering/finding-an-organization-on-c8-saas/index.md',\n ],\n },\n },\n supportEngineer: {\n allowed: [...CLOUD_TEAM_EMAILS, ...SUPPORT_MANAGERS_EMAILS],\n rolesToAssign: [\n 'accounts:read',\n 'accounts:connections:create',\n 'accounts:connections:update',\n 'support:agent',\n ],\n email: {\n handbookPages: [\n 'https://lamppost.camunda-it.rocks/handbook/#departments/products/engineering/access-to-a-customers-organization-on-c8-saas/index.md',\n 'https://confluence.camunda.com/display/HAN/How+to+handle+requests+for+External+SSO+integration+in+C8-SaaS',\n ],\n },\n },\n ssoAdmin: {\n allowed: [...CLOUD_TEAM_EMAILS, ...SUPPORT_MANAGERS_EMAILS],\n rolesToAssign: [\n 'accounts:read',\n 'accounts:connections:create',\n 'accounts:connections:update',\n 'accounts:connections:delete',\n 'support:agent',\n ],\n email: {\n handbookPages: [\n 'https://lamppost.camunda-it.rocks/handbook/#departments/products/engineering/access-to-a-customers-organization-on-c8-saas/index.md',\n 'https://confluence.camunda.com/display/HAN/How+to+handle+requests+for+External+SSO+integration+in+C8-SaaS',\n ],\n },\n },\n supportAgent: {\n allowed: [\n ...CLOUD_TEAM_EMAILS,\n ...SUPPORT_MANAGERS_EMAILS,\n ...C8_ENGINEERING_MANAGERS_EMAILS,\n ...CONSULTING_MANAGER_EMAILS,\n ],\n rolesToAssign: ['support:agent'],\n email: {\n handbookPages: [\n 'https://lamppost.camunda-it.rocks/handbook/#departments/products/engineering/access-to-a-customers-organization-on-c8-saas/index.md',\n ],\n },\n },\n clusterUpdateSupportEngineer: {\n allowed: [\n ...CLOUD_TEAM_EMAILS,\n ...SUPPORT_MANAGERS_EMAILS,\n ...C8_ENGINEERING_MANAGERS_EMAILS,\n ],\n rolesToAssign: [\n 'accounts:clusterUpdates',\n 'support:agent',\n 'accounts:read',\n ],\n email: {\n handbookPages: [\n 'https://lamppost.camunda-it.rocks/handbook/#departments/products/engineering/managing-generations-on-c8-saas/index.md',\n ],\n },\n },\n c8ReleaseManager: {\n allowed: [...CLOUD_TEAM_EMAILS, ...C8_ENGINEERING_MANAGERS_EMAILS],\n rolesToAssign: [\n 'console:C8ReleaseManager',\n 'accounts:read',\n 'console:C8UpdateEnforcer',\n ],\n email: {\n handbookPages: [\n 'https://lamppost.camunda-it.rocks/handbook/#departments/products/engineering/managing-generations-on-c8-saas/index.md',\n ],\n },\n },\n incidentEngineer: {\n allowed: [...CLOUD_TEAM_EMAILS, ...C8_ENGINEERING_MANAGERS_EMAILS],\n rolesToAssign: [\n 'accounts:read',\n 'support:agent',\n 'console:operationsEngineer',\n ],\n email: {\n handbookPages: [\n 'https://lamppost.camunda-it.rocks/handbook/#departments/products/engineering/tweaking-a-running-cluster/index.md',\n ],\n },\n },\n consulting: {\n allowed: [...CLOUD_TEAM_EMAILS, ...CONSULTING_MANAGER_EMAILS],\n rolesToAssign: [\n 'accounts:read',\n 'console:admin:readonly',\n 'accounts:trialExtender',\n 'accounts:limitExtender',\n 'accounts:enterpriseAdmin',\n ],\n email: {\n handbookPages: [\n 'https://lamppost.camunda-it.rocks/handbook/#departments/products/engineering/finding-an-organization-on-c8-saas/index.md',\n 'https://confluence.camunda.com/display/HAN/Extend+a+Trial+Subscription+on+C8+SaaS',\n ],\n },\n },\n csm: {\n allowed: [...CLOUD_TEAM_EMAILS, ...CSM_MANAGER_EMAIL],\n rolesToAssign: [\n 'accounts:enterpriseAdmin',\n 'accounts:read',\n 'accounts:trialExtender',\n ],\n email: {\n handbookPages: [\n 'https://confluence.camunda.com/display/FIELDOPS/Migrating+C8-SaaS+Organizations+to+Enterprise',\n 'https://lamppost.camunda-it.rocks/handbook/#departments/products/engineering/modify-a-running-c8-saas-enterprise-organisation/index.md',\n 'https://confluence.camunda.com/display/HAN/Extend+a+Trial+Subscription+on+C8+SaaS',\n ],\n },\n },\n csmOffboard: {\n allowed: [...CLOUD_TEAM_EMAILS, ...CSM_MANAGER_EMAIL],\n rolesToAssign: ['accounts:enterpriseOffboarding', 'accounts:read'],\n email: {\n handbookPages: [\n 'https://lamppost.camunda-it.rocks/handbook/#departments/products/engineering/shutting-down-an-c8-saas-organization/index.md',\n ],\n },\n },\n adr: {\n allowed: [...ADR_MANAGER_EMAIL, 'javier.garcia-alzorriz@camunda.com'],\n rolesToAssign: ['accounts:trialExtender', 'accounts:read'],\n email: {\n handbookPages: [\n 'https://lamppost.camunda-it.rocks/handbook/#departments/products/engineering/finding-an-organization-on-c8-saas/index.md',\n 'https://confluence.camunda.com/display/HAN/Extend+a+Trial+Subscription+on+C8+SaaS',\n ],\n },\n },\n trialExtender: {\n allowed: [\n ...CLOUD_TEAM_EMAILS,\n ...LIMIT_EXTENDERS,\n 'rory.tettey@camunda.com',\n ],\n rolesToAssign: ['accounts:trialExtender', 'accounts:read'],\n email: {\n handbookPages: [\n 'https://lamppost.camunda-it.rocks/handbook/#departments/products/engineering/finding-an-organization-on-c8-saas/index.md',\n 'https://confluence.camunda.com/display/HAN/Extend+a+Trial+Subscription+on+C8+SaaS',\n ],\n },\n },\n limitExtender: {\n allowed: [...CLOUD_TEAM_EMAILS, ...LIMIT_EXTENDERS],\n rolesToAssign: ['accounts:limitExtender', 'accounts:read'],\n email: {\n handbookPages: [\n 'https://lamppost.camunda-it.rocks/handbook/#departments/products/engineering/finding-an-organization-on-c8-saas/index.md',\n 'https://confluence.camunda.com/display/HAN/Managing+Organization+Limits+on+C8+SaaS',\n ],\n },\n },\n workshopCreator: {\n allowed: [...CLOUD_TEAM_EMAILS, 'robert.emsbach@camunda.com'],\n rolesToAssign: ['accounts:orgCreator'],\n email: {\n handbookPages: [\n 'https://lamppost.camunda-it.rocks/handbook/#departments/products/engineering/finding-an-organization-on-c8-saas/index.md',\n ],\n },\n },\n pdfWatermarkRead: {\n allowed: [...CLOUD_TEAM_EMAILS, ...PDF_WATERMARK_EMAILS],\n rolesToAssign: ['accounts:pdfWatermarkReader'],\n email: {\n handbookPages: [],\n },\n },\n pdfWatermarkWrite: {\n allowed: [...CLOUD_TEAM_EMAILS, ...PDF_WATERMARK_EMAILS],\n rolesToAssign: ['accounts:pdfWatermarkWriter'],\n email: {\n handbookPages: [],\n },\n },\n}\n"],
|
|
5
|
-
"mappings": "
|
|
4
|
+
"sourcesContent": ["/*\n * Copyright Camunda Services GmbH and/or licensed to Camunda Services GmbH\n * under one or more contributor license agreements. Licensed under a commercial license.\n * You may not use this file except in compliance with the commercial license.\n */\n\nimport type { Roles } from '../types/Roles.js'\n\n/**\n * NOTE: This package (`@camunda/ccma-shared-types`) is published publicly to\n * npmjs.org and is imported directly by frontend applications, so its contents\n * ship in the browser bundle and in every published npm version.\n *\n * For that reason this file MUST NOT contain the `allowed` email lists (real\n * Camunda employee names/emails) that gate who may run each onboarding\n * profile. Those lists live in the private, never-published\n * `@camunda-cloud/shared-backend` package instead\n * (see `packages/shared-backend/src/permissions/profile.permissions.ts`).\n *\n * This file only exposes the non-sensitive parts of each profile that are\n * safe to ship publicly: the roles to assign and the handbook links.\n */\nexport interface OnboardConfig {\n [unit: string]: {\n rolesToAssign: Roles[]\n email: {\n handbookPages: string[]\n }\n }\n}\n\nexport const PROFILES: OnboardConfig = {\n readOnly: {\n rolesToAssign: ['accounts:read', 'console:admin:readonly'],\n email: {\n handbookPages: [\n 'https://lamppost.camunda-it.rocks/handbook/#departments/products/engineering/finding-an-organization-on-c8-saas/index.md',\n ],\n },\n },\n supportEngineer: {\n rolesToAssign: [\n 'accounts:read',\n 'accounts:connections:create',\n 'accounts:connections:update',\n 'support:agent',\n ],\n email: {\n handbookPages: [\n 'https://lamppost.camunda-it.rocks/handbook/#departments/products/engineering/access-to-a-customers-organization-on-c8-saas/index.md',\n 'https://confluence.camunda.com/display/HAN/How+to+handle+requests+for+External+SSO+integration+in+C8-SaaS',\n ],\n },\n },\n ssoAdmin: {\n rolesToAssign: [\n 'accounts:read',\n 'accounts:connections:create',\n 'accounts:connections:update',\n 'accounts:connections:delete',\n 'support:agent',\n ],\n email: {\n handbookPages: [\n 'https://lamppost.camunda-it.rocks/handbook/#departments/products/engineering/access-to-a-customers-organization-on-c8-saas/index.md',\n 'https://confluence.camunda.com/display/HAN/How+to+handle+requests+for+External+SSO+integration+in+C8-SaaS',\n ],\n },\n },\n tam: {\n rolesToAssign: [\n 'support:agent',\n 'accounts:trialExtender',\n 'accounts:limitExtender',\n 'accounts:enterpriseAdmin',\n 'accounts:read',\n 'console:admin:readonly',\n ],\n email: {\n handbookPages: [\n 'https://confluence.camunda.com/display/HAN/Access+to+a+customers+Organization+on+C8+SaaS',\n ],\n },\n },\n supportAgent: {\n rolesToAssign: ['support:agent'],\n email: {\n handbookPages: [\n 'https://lamppost.camunda-it.rocks/handbook/#departments/products/engineering/access-to-a-customers-organization-on-c8-saas/index.md',\n ],\n },\n },\n clusterUpdateSupportEngineer: {\n rolesToAssign: [\n 'accounts:clusterUpdates',\n 'support:agent',\n 'accounts:read',\n ],\n email: {\n handbookPages: [\n 'https://lamppost.camunda-it.rocks/handbook/#departments/products/engineering/managing-generations-on-c8-saas/index.md',\n ],\n },\n },\n c8ReleaseManager: {\n rolesToAssign: [\n 'console:C8ReleaseManager',\n 'accounts:read',\n 'console:C8UpdateEnforcer',\n ],\n email: {\n handbookPages: [\n 'https://lamppost.camunda-it.rocks/handbook/#departments/products/engineering/managing-generations-on-c8-saas/index.md',\n ],\n },\n },\n incidentEngineer: {\n rolesToAssign: [\n 'accounts:read',\n 'support:agent',\n 'console:operationsEngineer',\n ],\n email: {\n handbookPages: [\n 'https://lamppost.camunda-it.rocks/handbook/#departments/products/engineering/tweaking-a-running-cluster/index.md',\n ],\n },\n },\n consulting: {\n rolesToAssign: [\n 'accounts:read',\n 'console:admin:readonly',\n 'accounts:trialExtender',\n 'accounts:limitExtender',\n 'accounts:enterpriseAdmin',\n ],\n email: {\n handbookPages: [\n 'https://lamppost.camunda-it.rocks/handbook/#departments/products/engineering/finding-an-organization-on-c8-saas/index.md',\n 'https://confluence.camunda.com/display/HAN/Extend+a+Trial+Subscription+on+C8+SaaS',\n ],\n },\n },\n csm: {\n rolesToAssign: [\n 'accounts:enterpriseAdmin',\n 'accounts:read',\n 'accounts:trialExtender',\n ],\n email: {\n handbookPages: [\n 'https://confluence.camunda.com/display/FIELDOPS/Migrating+C8-SaaS+Organizations+to+Enterprise',\n 'https://lamppost.camunda-it.rocks/handbook/#departments/products/engineering/modify-a-running-c8-saas-enterprise-organisation/index.md',\n 'https://confluence.camunda.com/display/HAN/Extend+a+Trial+Subscription+on+C8+SaaS',\n ],\n },\n },\n csmOffboard: {\n rolesToAssign: ['accounts:enterpriseOffboarding', 'accounts:read'],\n email: {\n handbookPages: [\n 'https://lamppost.camunda-it.rocks/handbook/#departments/products/engineering/shutting-down-an-c8-saas-organization/index.md',\n ],\n },\n },\n adr: {\n rolesToAssign: ['accounts:trialExtender', 'accounts:read'],\n email: {\n handbookPages: [\n 'https://lamppost.camunda-it.rocks/handbook/#departments/products/engineering/finding-an-organization-on-c8-saas/index.md',\n 'https://confluence.camunda.com/display/HAN/Extend+a+Trial+Subscription+on+C8+SaaS',\n ],\n },\n },\n trialExtender: {\n rolesToAssign: ['accounts:trialExtender', 'accounts:read'],\n email: {\n handbookPages: [\n 'https://lamppost.camunda-it.rocks/handbook/#departments/products/engineering/finding-an-organization-on-c8-saas/index.md',\n 'https://confluence.camunda.com/display/HAN/Extend+a+Trial+Subscription+on+C8+SaaS',\n ],\n },\n },\n limitExtender: {\n rolesToAssign: ['accounts:limitExtender', 'accounts:read'],\n email: {\n handbookPages: [\n 'https://lamppost.camunda-it.rocks/handbook/#departments/products/engineering/finding-an-organization-on-c8-saas/index.md',\n 'https://confluence.camunda.com/display/HAN/Managing+Organization+Limits+on+C8+SaaS',\n ],\n },\n },\n workshopCreator: {\n rolesToAssign: ['accounts:orgCreator'],\n email: {\n handbookPages: [\n 'https://lamppost.camunda-it.rocks/handbook/#departments/products/engineering/finding-an-organization-on-c8-saas/index.md',\n ],\n },\n },\n pdfWatermarkRead: {\n rolesToAssign: ['accounts:pdfWatermarkReader'],\n email: {\n handbookPages: [],\n },\n },\n pdfWatermarkWrite: {\n rolesToAssign: ['accounts:pdfWatermarkWriter'],\n email: {\n handbookPages: [],\n },\n },\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/** Comparison operators a single term can carry (`:` is plain match/equality). */
|
|
2
|
+
export type SearchTermOperator = ':' | '>' | '>=' | '<' | '<=';
|
|
3
|
+
/** A single `field:value` (or bare value) clause with an operator. */
|
|
4
|
+
export interface TermNode {
|
|
5
|
+
kind: 'term';
|
|
6
|
+
/** Field name; `undefined` for a bare term (searches the default fields). */
|
|
7
|
+
field?: string;
|
|
8
|
+
operator: SearchTermOperator;
|
|
9
|
+
/** The raw (already unquoted) value the user typed. */
|
|
10
|
+
value: string;
|
|
11
|
+
}
|
|
12
|
+
/** A `field:[lower TO upper]` (or `{…}`) range clause. */
|
|
13
|
+
export interface RangeNode {
|
|
14
|
+
kind: 'range';
|
|
15
|
+
field: string;
|
|
16
|
+
lower: string;
|
|
17
|
+
upper: string;
|
|
18
|
+
/** `[` is inclusive, `{` is exclusive. */
|
|
19
|
+
lowerInclusive: boolean;
|
|
20
|
+
upperInclusive: boolean;
|
|
21
|
+
}
|
|
22
|
+
export interface AndNode {
|
|
23
|
+
kind: 'and';
|
|
24
|
+
left: QueryNode;
|
|
25
|
+
right: QueryNode;
|
|
26
|
+
}
|
|
27
|
+
export interface OrNode {
|
|
28
|
+
kind: 'or';
|
|
29
|
+
left: QueryNode;
|
|
30
|
+
right: QueryNode;
|
|
31
|
+
}
|
|
32
|
+
export interface NotNode {
|
|
33
|
+
kind: 'not';
|
|
34
|
+
child: QueryNode;
|
|
35
|
+
}
|
|
36
|
+
/** Any node in a parsed query tree. */
|
|
37
|
+
export type QueryNode = TermNode | RangeNode | AndNode | OrNode | NotNode;
|
|
38
|
+
/**
|
|
39
|
+
* A user-facing problem with a query — a syntax error, an unknown field, an
|
|
40
|
+
* operator a field does not support, or an unparseable value. Thrown by the
|
|
41
|
+
* parser and the compiler; the `/v2` routers turn it into a 400 whose body is
|
|
42
|
+
* `message`, so the search box can show it verbatim.
|
|
43
|
+
*/
|
|
44
|
+
export declare class LuceneQueryError extends Error {
|
|
45
|
+
/** Discriminates the failure so the UI/router can branch without string-matching. */
|
|
46
|
+
readonly kind: 'syntax' | 'unknown-field' | 'bad-operator' | 'bad-value';
|
|
47
|
+
/** Best-effort "did you mean…" hint (unknown field / value). */
|
|
48
|
+
readonly suggestion?: string;
|
|
49
|
+
constructor(message: string, kind: LuceneQueryError['kind'], suggestion?: string);
|
|
50
|
+
}
|
|
51
|
+
/** Type guard usable across package boundaries (avoids `instanceof` pitfalls). */
|
|
52
|
+
export declare const isLuceneQueryError: (error: unknown) => error is LuceneQueryError;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
class LuceneQueryError extends Error {
|
|
2
|
+
/** Discriminates the failure so the UI/router can branch without string-matching. */
|
|
3
|
+
kind;
|
|
4
|
+
/** Best-effort "did you mean…" hint (unknown field / value). */
|
|
5
|
+
suggestion;
|
|
6
|
+
constructor(message, kind, suggestion) {
|
|
7
|
+
super(message);
|
|
8
|
+
this.name = "LuceneQueryError";
|
|
9
|
+
this.kind = kind;
|
|
10
|
+
this.suggestion = suggestion;
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
const isLuceneQueryError = (error) => error instanceof LuceneQueryError || typeof error === "object" && error !== null && error.name === "LuceneQueryError";
|
|
14
|
+
export {
|
|
15
|
+
LuceneQueryError,
|
|
16
|
+
isLuceneQueryError
|
|
17
|
+
};
|
|
18
|
+
//# sourceMappingURL=ast.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/search/ast.ts"],
|
|
4
|
+
"sourcesContent": ["/*\n * Copyright Camunda Services GmbH and/or licensed to Camunda Services GmbH\n * under one or more contributor license agreements. Licensed under a commercial license.\n * You may not use this file except in compliance with the commercial license.\n */\n\n// ============================================================================\n// Lucene-style query AST (Control table search)\n//\n// A small, hand-rolled subset of Lucene used by the Control frontend's table\n// search boxes: `field:value` clauses, quoted phrases, boolean AND/OR/NOT with\n// parentheses, `-` negation, comparison operators (`>`, `>=`, `<`, `<=`),\n// inclusive `[a TO b]` / exclusive `{a TO b}` ranges, and `*`/`?` wildcards on\n// strings. Parsed on the backend and compiled to parameterized SQL \u2014 no fuzzy\n// (`~`), boosting (`^`), or regex in this version.\n// ============================================================================\n\n/** Comparison operators a single term can carry (`:` is plain match/equality). */\nexport type SearchTermOperator = ':' | '>' | '>=' | '<' | '<='\n\n/** A single `field:value` (or bare value) clause with an operator. */\nexport interface TermNode {\n kind: 'term'\n /** Field name; `undefined` for a bare term (searches the default fields). */\n field?: string\n operator: SearchTermOperator\n /** The raw (already unquoted) value the user typed. */\n value: string\n}\n\n/** A `field:[lower TO upper]` (or `{\u2026}`) range clause. */\nexport interface RangeNode {\n kind: 'range'\n field: string\n lower: string\n upper: string\n /** `[` is inclusive, `{` is exclusive. */\n lowerInclusive: boolean\n upperInclusive: boolean\n}\n\nexport interface AndNode {\n kind: 'and'\n left: QueryNode\n right: QueryNode\n}\n\nexport interface OrNode {\n kind: 'or'\n left: QueryNode\n right: QueryNode\n}\n\nexport interface NotNode {\n kind: 'not'\n child: QueryNode\n}\n\n/** Any node in a parsed query tree. */\nexport type QueryNode = TermNode | RangeNode | AndNode | OrNode | NotNode\n\n/**\n * A user-facing problem with a query \u2014 a syntax error, an unknown field, an\n * operator a field does not support, or an unparseable value. Thrown by the\n * parser and the compiler; the `/v2` routers turn it into a 400 whose body is\n * `message`, so the search box can show it verbatim.\n */\nexport class LuceneQueryError extends Error {\n /** Discriminates the failure so the UI/router can branch without string-matching. */\n public readonly kind:\n | 'syntax'\n | 'unknown-field'\n | 'bad-operator'\n | 'bad-value'\n /** Best-effort \"did you mean\u2026\" hint (unknown field / value). */\n public readonly suggestion?: string\n\n constructor(\n message: string,\n kind: LuceneQueryError['kind'],\n suggestion?: string,\n ) {\n super(message)\n this.name = 'LuceneQueryError'\n this.kind = kind\n this.suggestion = suggestion\n }\n}\n\n/** Type guard usable across package boundaries (avoids `instanceof` pitfalls). */\nexport const isLuceneQueryError = (error: unknown): error is LuceneQueryError =>\n error instanceof LuceneQueryError ||\n (typeof error === 'object' &&\n error !== null &&\n (error as { name?: unknown }).name === 'LuceneQueryError')\n"],
|
|
5
|
+
"mappings": "AAmEO,MAAM,yBAAyB,MAAM;AAAA;AAAA,EAE1B;AAAA;AAAA,EAMA;AAAA,EAEhB,YACE,SACA,MACA,YACA;AACA,UAAM,OAAO;AACb,SAAK,OAAO;AACZ,SAAK,OAAO;AACZ,SAAK,aAAa;AAAA,EACpB;AACF;AAGO,MAAM,qBAAqB,CAAC,UACjC,iBAAiB,oBAChB,OAAO,UAAU,YAChB,UAAU,QACT,MAA6B,SAAS;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { SearchFieldSpec } from './fields.js';
|
|
2
|
+
/**
|
|
3
|
+
* Searchable fields for the Clusters list (mirrors `ListClustersV2Params.filter`
|
|
4
|
+
* — the fields the endpoint already filters on). `status`, `region`, and
|
|
5
|
+
* `provider` are resolved server-side from live K8s state / context config, so
|
|
6
|
+
* they only support equality. A bare term searches
|
|
7
|
+
* {@link CLUSTER_DEFAULT_SEARCH_FIELDS}.
|
|
8
|
+
*/
|
|
9
|
+
export declare const CLUSTER_SEARCH_FIELDS: readonly SearchFieldSpec[];
|
|
10
|
+
/** Fields a bare term searches for clusters (name substring — matches `q`). */
|
|
11
|
+
export declare const CLUSTER_DEFAULT_SEARCH_FIELDS: readonly ["name"];
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
const CLUSTER_SEARCH_FIELDS = [
|
|
2
|
+
{
|
|
3
|
+
field: "name",
|
|
4
|
+
label: "Name",
|
|
5
|
+
description: "Cluster name (substring match; supports * and ?).",
|
|
6
|
+
type: "string",
|
|
7
|
+
capabilities: ["match"],
|
|
8
|
+
example: "name:prod"
|
|
9
|
+
},
|
|
10
|
+
{
|
|
11
|
+
field: "id",
|
|
12
|
+
label: "ID",
|
|
13
|
+
description: "Cluster UUID (substring match).",
|
|
14
|
+
type: "string",
|
|
15
|
+
capabilities: ["match"],
|
|
16
|
+
example: "id:9c2b"
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
field: "orgId",
|
|
20
|
+
label: "Organization ID",
|
|
21
|
+
description: "Owning organization UUID.",
|
|
22
|
+
type: "string",
|
|
23
|
+
capabilities: ["match"],
|
|
24
|
+
example: "orgId:2f1a9c3e-4b7d-4c2a-9f1e-8a6b5c4d3e2f"
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
field: "status",
|
|
28
|
+
label: "Status",
|
|
29
|
+
description: "Live cluster health (e.g. healthy, unhealthy, updating).",
|
|
30
|
+
type: "string",
|
|
31
|
+
capabilities: ["match"],
|
|
32
|
+
example: "status:healthy"
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
field: "plan",
|
|
36
|
+
label: "Plan type",
|
|
37
|
+
description: "Cluster plan-type name (e.g. Trial, Production-S).",
|
|
38
|
+
type: "string",
|
|
39
|
+
capabilities: ["match"],
|
|
40
|
+
example: "plan:Production-S"
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
field: "planName",
|
|
44
|
+
label: "Plan name",
|
|
45
|
+
description: "The concrete cluster-plan name (not the type).",
|
|
46
|
+
type: "string",
|
|
47
|
+
capabilities: ["match"],
|
|
48
|
+
example: 'planName:"Trial Cluster"'
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
field: "generation",
|
|
52
|
+
label: "Generation",
|
|
53
|
+
description: "Cluster generation name.",
|
|
54
|
+
type: "string",
|
|
55
|
+
capabilities: ["match"],
|
|
56
|
+
example: 'generation:"Zeebe 8.6.0"'
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
field: "minorVersion",
|
|
60
|
+
label: "Minor version",
|
|
61
|
+
description: "Zeebe minor-version prefix (e.g. 8.7 matches 8.7.x).",
|
|
62
|
+
type: "string",
|
|
63
|
+
capabilities: ["match"],
|
|
64
|
+
example: "minorVersion:8.7"
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
field: "channel",
|
|
68
|
+
label: "Channel",
|
|
69
|
+
description: "Release channel name.",
|
|
70
|
+
type: "string",
|
|
71
|
+
capabilities: ["match"],
|
|
72
|
+
example: "channel:Stable"
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
field: "region",
|
|
76
|
+
label: "Region",
|
|
77
|
+
description: "Region name (resolved from the K8s context).",
|
|
78
|
+
type: "string",
|
|
79
|
+
capabilities: ["match"],
|
|
80
|
+
example: 'region:"Europe West"'
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
field: "provider",
|
|
84
|
+
label: "Cloud provider",
|
|
85
|
+
description: "Cloud provider (resolved from the K8s context).",
|
|
86
|
+
type: "string",
|
|
87
|
+
capabilities: ["match"],
|
|
88
|
+
example: "provider:gcp"
|
|
89
|
+
},
|
|
90
|
+
{
|
|
91
|
+
field: "k8sContext",
|
|
92
|
+
label: "K8s context",
|
|
93
|
+
description: "Exact K8s context UUID.",
|
|
94
|
+
type: "string",
|
|
95
|
+
capabilities: ["match"],
|
|
96
|
+
example: "k8sContext:7d3b2a10-9e5f-4c1b-b8a2-1f2e3d4c5b6a"
|
|
97
|
+
},
|
|
98
|
+
{
|
|
99
|
+
field: "autoUpdate",
|
|
100
|
+
label: "Auto-update",
|
|
101
|
+
description: "Whether auto-update is enabled.",
|
|
102
|
+
type: "boolean",
|
|
103
|
+
capabilities: ["match"],
|
|
104
|
+
example: "autoUpdate:false"
|
|
105
|
+
},
|
|
106
|
+
{
|
|
107
|
+
field: "internal",
|
|
108
|
+
label: "Internal",
|
|
109
|
+
description: "Whether the cluster is Camunda-owned.",
|
|
110
|
+
type: "boolean",
|
|
111
|
+
capabilities: ["match"],
|
|
112
|
+
example: "internal:true"
|
|
113
|
+
},
|
|
114
|
+
{
|
|
115
|
+
field: "hasActiveModification",
|
|
116
|
+
label: "Active modification",
|
|
117
|
+
description: "Whether the cluster has an active (non-archived) modification.",
|
|
118
|
+
type: "boolean",
|
|
119
|
+
capabilities: ["match"],
|
|
120
|
+
example: "hasActiveModification:true"
|
|
121
|
+
},
|
|
122
|
+
{
|
|
123
|
+
field: "created",
|
|
124
|
+
label: "Created",
|
|
125
|
+
description: "Creation date (ISO, e.g. 2024-01-31). Supports ranges.",
|
|
126
|
+
type: "date",
|
|
127
|
+
capabilities: ["match", "range"],
|
|
128
|
+
example: "created:>2024-01-01"
|
|
129
|
+
}
|
|
130
|
+
];
|
|
131
|
+
const CLUSTER_DEFAULT_SEARCH_FIELDS = ["name"];
|
|
132
|
+
export {
|
|
133
|
+
CLUSTER_DEFAULT_SEARCH_FIELDS,
|
|
134
|
+
CLUSTER_SEARCH_FIELDS
|
|
135
|
+
};
|
|
136
|
+
//# sourceMappingURL=cluster-search-fields.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/search/cluster-search-fields.ts"],
|
|
4
|
+
"sourcesContent": ["/*\n * Copyright Camunda Services GmbH and/or licensed to Camunda Services GmbH\n * under one or more contributor license agreements. Licensed under a commercial license.\n * You may not use this file except in compliance with the commercial license.\n */\n\nimport type { SearchFieldSpec } from './fields.js'\n\n/**\n * Searchable fields for the Clusters list (mirrors `ListClustersV2Params.filter`\n * \u2014 the fields the endpoint already filters on). `status`, `region`, and\n * `provider` are resolved server-side from live K8s state / context config, so\n * they only support equality. A bare term searches\n * {@link CLUSTER_DEFAULT_SEARCH_FIELDS}.\n */\nexport const CLUSTER_SEARCH_FIELDS: readonly SearchFieldSpec[] = [\n {\n field: 'name',\n label: 'Name',\n description: 'Cluster name (substring match; supports * and ?).',\n type: 'string',\n capabilities: ['match'],\n example: 'name:prod',\n },\n {\n field: 'id',\n label: 'ID',\n description: 'Cluster UUID (substring match).',\n type: 'string',\n capabilities: ['match'],\n example: 'id:9c2b',\n },\n {\n field: 'orgId',\n label: 'Organization ID',\n description: 'Owning organization UUID.',\n type: 'string',\n capabilities: ['match'],\n example: 'orgId:2f1a9c3e-4b7d-4c2a-9f1e-8a6b5c4d3e2f',\n },\n {\n field: 'status',\n label: 'Status',\n description: 'Live cluster health (e.g. healthy, unhealthy, updating).',\n type: 'string',\n capabilities: ['match'],\n example: 'status:healthy',\n },\n {\n field: 'plan',\n label: 'Plan type',\n description: 'Cluster plan-type name (e.g. Trial, Production-S).',\n type: 'string',\n capabilities: ['match'],\n example: 'plan:Production-S',\n },\n {\n field: 'planName',\n label: 'Plan name',\n description: 'The concrete cluster-plan name (not the type).',\n type: 'string',\n capabilities: ['match'],\n example: 'planName:\"Trial Cluster\"',\n },\n {\n field: 'generation',\n label: 'Generation',\n description: 'Cluster generation name.',\n type: 'string',\n capabilities: ['match'],\n example: 'generation:\"Zeebe 8.6.0\"',\n },\n {\n field: 'minorVersion',\n label: 'Minor version',\n description: 'Zeebe minor-version prefix (e.g. 8.7 matches 8.7.x).',\n type: 'string',\n capabilities: ['match'],\n example: 'minorVersion:8.7',\n },\n {\n field: 'channel',\n label: 'Channel',\n description: 'Release channel name.',\n type: 'string',\n capabilities: ['match'],\n example: 'channel:Stable',\n },\n {\n field: 'region',\n label: 'Region',\n description: 'Region name (resolved from the K8s context).',\n type: 'string',\n capabilities: ['match'],\n example: 'region:\"Europe West\"',\n },\n {\n field: 'provider',\n label: 'Cloud provider',\n description: 'Cloud provider (resolved from the K8s context).',\n type: 'string',\n capabilities: ['match'],\n example: 'provider:gcp',\n },\n {\n field: 'k8sContext',\n label: 'K8s context',\n description: 'Exact K8s context UUID.',\n type: 'string',\n capabilities: ['match'],\n example: 'k8sContext:7d3b2a10-9e5f-4c1b-b8a2-1f2e3d4c5b6a',\n },\n {\n field: 'autoUpdate',\n label: 'Auto-update',\n description: 'Whether auto-update is enabled.',\n type: 'boolean',\n capabilities: ['match'],\n example: 'autoUpdate:false',\n },\n {\n field: 'internal',\n label: 'Internal',\n description: 'Whether the cluster is Camunda-owned.',\n type: 'boolean',\n capabilities: ['match'],\n example: 'internal:true',\n },\n {\n field: 'hasActiveModification',\n label: 'Active modification',\n description:\n 'Whether the cluster has an active (non-archived) modification.',\n type: 'boolean',\n capabilities: ['match'],\n example: 'hasActiveModification:true',\n },\n {\n field: 'created',\n label: 'Created',\n description: 'Creation date (ISO, e.g. 2024-01-31). Supports ranges.',\n type: 'date',\n capabilities: ['match', 'range'],\n example: 'created:>2024-01-01',\n },\n] as const\n\n/** Fields a bare term searches for clusters (name substring \u2014 matches `q`). */\nexport const CLUSTER_DEFAULT_SEARCH_FIELDS = ['name'] as const\n"],
|
|
5
|
+
"mappings": "AAeO,MAAM,wBAAoD;AAAA,EAC/D;AAAA,IACE,OAAO;AAAA,IACP,OAAO;AAAA,IACP,aAAa;AAAA,IACb,MAAM;AAAA,IACN,cAAc,CAAC,OAAO;AAAA,IACtB,SAAS;AAAA,EACX;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,OAAO;AAAA,IACP,aAAa;AAAA,IACb,MAAM;AAAA,IACN,cAAc,CAAC,OAAO;AAAA,IACtB,SAAS;AAAA,EACX;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,OAAO;AAAA,IACP,aAAa;AAAA,IACb,MAAM;AAAA,IACN,cAAc,CAAC,OAAO;AAAA,IACtB,SAAS;AAAA,EACX;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,OAAO;AAAA,IACP,aAAa;AAAA,IACb,MAAM;AAAA,IACN,cAAc,CAAC,OAAO;AAAA,IACtB,SAAS;AAAA,EACX;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,OAAO;AAAA,IACP,aAAa;AAAA,IACb,MAAM;AAAA,IACN,cAAc,CAAC,OAAO;AAAA,IACtB,SAAS;AAAA,EACX;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,OAAO;AAAA,IACP,aAAa;AAAA,IACb,MAAM;AAAA,IACN,cAAc,CAAC,OAAO;AAAA,IACtB,SAAS;AAAA,EACX;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,OAAO;AAAA,IACP,aAAa;AAAA,IACb,MAAM;AAAA,IACN,cAAc,CAAC,OAAO;AAAA,IACtB,SAAS;AAAA,EACX;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,OAAO;AAAA,IACP,aAAa;AAAA,IACb,MAAM;AAAA,IACN,cAAc,CAAC,OAAO;AAAA,IACtB,SAAS;AAAA,EACX;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,OAAO;AAAA,IACP,aAAa;AAAA,IACb,MAAM;AAAA,IACN,cAAc,CAAC,OAAO;AAAA,IACtB,SAAS;AAAA,EACX;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,OAAO;AAAA,IACP,aAAa;AAAA,IACb,MAAM;AAAA,IACN,cAAc,CAAC,OAAO;AAAA,IACtB,SAAS;AAAA,EACX;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,OAAO;AAAA,IACP,aAAa;AAAA,IACb,MAAM;AAAA,IACN,cAAc,CAAC,OAAO;AAAA,IACtB,SAAS;AAAA,EACX;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,OAAO;AAAA,IACP,aAAa;AAAA,IACb,MAAM;AAAA,IACN,cAAc,CAAC,OAAO;AAAA,IACtB,SAAS;AAAA,EACX;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,OAAO;AAAA,IACP,aAAa;AAAA,IACb,MAAM;AAAA,IACN,cAAc,CAAC,OAAO;AAAA,IACtB,SAAS;AAAA,EACX;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,OAAO;AAAA,IACP,aAAa;AAAA,IACb,MAAM;AAAA,IACN,cAAc,CAAC,OAAO;AAAA,IACtB,SAAS;AAAA,EACX;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,OAAO;AAAA,IACP,aACE;AAAA,IACF,MAAM;AAAA,IACN,cAAc,CAAC,OAAO;AAAA,IACtB,SAAS;AAAA,EACX;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,OAAO;AAAA,IACP,aAAa;AAAA,IACb,MAAM;AAAA,IACN,cAAc,CAAC,SAAS,OAAO;AAAA,IAC/B,SAAS;AAAA,EACX;AACF;AAGO,MAAM,gCAAgC,CAAC,MAAM;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { type QueryNode } from './ast.js';
|
|
2
|
+
/** SQL binding for one searchable field (values live backend-side, not in the FE). */
|
|
3
|
+
export type FieldBinding = {
|
|
4
|
+
kind: 'string';
|
|
5
|
+
/** SQL column expression, e.g. `c.name` or `planType.name`. */
|
|
6
|
+
column: string;
|
|
7
|
+
/** Cast the column to text before matching (uuid columns). */
|
|
8
|
+
cast?: boolean;
|
|
9
|
+
/** `substring` → ILIKE %v%; `exact` → case-insensitive equality. */
|
|
10
|
+
match: 'substring' | 'exact';
|
|
11
|
+
} | {
|
|
12
|
+
kind: 'boolean';
|
|
13
|
+
column: string;
|
|
14
|
+
}
|
|
15
|
+
/** Presence/absence of a nullable column (e.g. active-modification FK). */
|
|
16
|
+
| {
|
|
17
|
+
kind: 'nullable';
|
|
18
|
+
column: string;
|
|
19
|
+
} | {
|
|
20
|
+
kind: 'date';
|
|
21
|
+
column: string;
|
|
22
|
+
} | {
|
|
23
|
+
kind: 'computed';
|
|
24
|
+
/** Column the resolved id set is matched against (e.g. `c.uuid`). */
|
|
25
|
+
idColumn: string;
|
|
26
|
+
/** Resolve an equality value to matching ids (in-memory / config). */
|
|
27
|
+
resolve: (value: string) => string[];
|
|
28
|
+
};
|
|
29
|
+
export interface CompileContext {
|
|
30
|
+
/** Field name → SQL binding. Keys are the whitelisted, canonical field names. */
|
|
31
|
+
bindings: Record<string, FieldBinding>;
|
|
32
|
+
/** Fields a bare term ORs over (must be `string` bindings); always substring. */
|
|
33
|
+
defaultFields: readonly string[];
|
|
34
|
+
/** Unique-per-call-site parameter prefix (avoids clashing with other params). */
|
|
35
|
+
paramPrefix: string;
|
|
36
|
+
}
|
|
37
|
+
export interface CompiledQuery {
|
|
38
|
+
sql: string;
|
|
39
|
+
params: Record<string, unknown>;
|
|
40
|
+
}
|
|
41
|
+
/** Compile a parsed query into a single parameterized SQL fragment. */
|
|
42
|
+
export declare const compileQuery: (node: QueryNode, ctx: CompileContext) => CompiledQuery;
|
|
43
|
+
/**
|
|
44
|
+
* Turn a user value into an ILIKE argument: SQL wildcards (`%`, `_`, `\`) are
|
|
45
|
+
* escaped to literals, then the user's `*`/`?` become `%`/`_`; a plain
|
|
46
|
+
* substring value is wrapped in `%…%`.
|
|
47
|
+
*/
|
|
48
|
+
export declare const likeArgument: (value: string, match: "substring" | "exact") => string;
|