@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.
Files changed (85) hide show
  1. package/dist/_tests/constants/failoverRegionPairs.const.spec.d.ts +1 -0
  2. package/dist/_tests/search/compiler.spec.d.ts +1 -0
  3. package/dist/_tests/search/parser.spec.d.ts +1 -0
  4. package/dist/_tests/search/registry.spec.d.ts +1 -0
  5. package/dist/_tests/types/ClusterPlanFields.type.spec.d.ts +1 -0
  6. package/dist/constants/failoverRegionPairs.const.d.ts +18 -0
  7. package/dist/constants/failoverRegionPairs.const.js +22 -0
  8. package/dist/constants/failoverRegionPairs.const.js.map +7 -0
  9. package/dist/constants/misc.const.d.ts +7 -0
  10. package/dist/constants/misc.const.js +2 -0
  11. package/dist/constants/misc.const.js.map +2 -2
  12. package/dist/dtos/Backup.dto.d.ts +5 -0
  13. package/dist/dtos/ClusterPlan.dto.d.ts +5 -0
  14. package/dist/dtos/ClusterPlanType.dto.d.ts +6 -0
  15. package/dist/dtos/ClusterSpecHistory.dto.d.ts +24 -0
  16. package/dist/dtos/ClusterSpecHistory.dto.js +1 -0
  17. package/dist/dtos/ClusterSpecHistory.dto.js.map +7 -0
  18. package/dist/dtos/CommonCluster.dto.d.ts +71 -6
  19. package/dist/dtos/ConsoleCluster.dto.d.ts +7 -0
  20. package/dist/dtos/ControlV2.dto.d.ts +121 -7
  21. package/dist/dtos/ExternalWebapp.dto.d.ts +89 -0
  22. package/dist/dtos/ExternalWebapp.dto.js +1 -0
  23. package/dist/dtos/ExternalWebapp.dto.js.map +7 -0
  24. package/dist/dtos/K8sContext.dto.d.ts +7 -0
  25. package/dist/dtos/Organization.dto.d.ts +2 -0
  26. package/dist/dtos/Organization.dto.js.map +1 -1
  27. package/dist/dtos/ReleaseTrainSanity.dto.d.ts +51 -0
  28. package/dist/dtos/ReleaseTrainSanity.dto.js +1 -0
  29. package/dist/dtos/ReleaseTrainSanity.dto.js.map +7 -0
  30. package/dist/dtos/SalesPlan.dto.js +4 -2
  31. package/dist/dtos/SalesPlan.dto.js.map +2 -2
  32. package/dist/dtos/StorybookConfig.dto.d.ts +39 -0
  33. package/dist/dtos/StorybookConfig.dto.js +1 -0
  34. package/dist/dtos/StorybookConfig.dto.js.map +7 -0
  35. package/dist/enums/AuditEntity.enum.d.ts +1 -0
  36. package/dist/enums/AuditEntity.enum.js +1 -0
  37. package/dist/enums/AuditEntity.enum.js.map +2 -2
  38. package/dist/enums/OrganizationRole.enum.d.ts +1 -2
  39. package/dist/enums/OrganizationRole.enum.js +7 -2
  40. package/dist/enums/OrganizationRole.enum.js.map +2 -2
  41. package/dist/enums/SystemAuditEntity.enum.d.ts +7 -2
  42. package/dist/enums/SystemAuditEntity.enum.js +5 -0
  43. package/dist/enums/SystemAuditEntity.enum.js.map +2 -2
  44. package/dist/index.d.ts +13 -5
  45. package/dist/index.js +39 -17
  46. package/dist/index.js.map +2 -2
  47. package/dist/permissions/combo.js +3 -0
  48. package/dist/permissions/combo.js.map +2 -2
  49. package/dist/permissions/console.permissions.d.ts +2 -0
  50. package/dist/permissions/console.permissions.js +7 -0
  51. package/dist/permissions/console.permissions.js.map +2 -2
  52. package/dist/permissions/profile.permissions.d.ts +14 -8
  53. package/dist/permissions/profile.permissions.js +16 -123
  54. package/dist/permissions/profile.permissions.js.map +2 -2
  55. package/dist/search/ast.d.ts +52 -0
  56. package/dist/search/ast.js +18 -0
  57. package/dist/search/ast.js.map +7 -0
  58. package/dist/search/cluster-search-fields.d.ts +11 -0
  59. package/dist/search/cluster-search-fields.js +136 -0
  60. package/dist/search/cluster-search-fields.js.map +7 -0
  61. package/dist/search/compiler.d.ts +48 -0
  62. package/dist/search/compiler.js +217 -0
  63. package/dist/search/compiler.js.map +7 -0
  64. package/dist/search/fields.d.ts +24 -0
  65. package/dist/search/fields.js +5 -0
  66. package/dist/search/fields.js.map +7 -0
  67. package/dist/search/index.d.ts +6 -0
  68. package/dist/search/index.js +33 -0
  69. package/dist/search/index.js.map +7 -0
  70. package/dist/search/organization-search-fields.d.ts +9 -0
  71. package/dist/search/organization-search-fields.js +50 -0
  72. package/dist/search/organization-search-fields.js.map +7 -0
  73. package/dist/search/parser.d.ts +7 -0
  74. package/dist/search/parser.js +324 -0
  75. package/dist/search/parser.js.map +7 -0
  76. package/dist/types/ClusterModification.type.d.ts +1 -0
  77. package/dist/types/ClusterPlanFields.type.d.ts +24 -0
  78. package/dist/types/ClusterPlanFields.type.js +591 -0
  79. package/dist/types/ClusterPlanFields.type.js.map +7 -0
  80. package/dist/types/ClusterPlanModification.type.d.ts +1 -0
  81. package/dist/types/EnterpriseIncludingValueMetrics.type.d.ts +1 -0
  82. package/dist/types/HdpTenantUsage.type.d.ts +4 -0
  83. package/dist/types/HdpTenantUsage.type.js +1 -0
  84. package/dist/types/HdpTenantUsage.type.js.map +7 -0
  85. 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
- supportAgent: {
129
- allowed: [
130
- ...CLOUD_TEAM_EMAILS,
131
- ...SUPPORT_MANAGERS_EMAILS,
132
- ...C8_ENGINEERING_MANAGERS_EMAILS,
133
- ...CONSULTING_MANAGER_EMAILS
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
- C8_ENGINEERING_MANAGERS_EMAILS,
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": "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",
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;