@camunda/ccma-shared-types 12.7.0 → 12.9.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/approvals/approval-rules.d.ts +4 -0
- package/dist/approvals/approval-rules.js +4 -0
- package/dist/approvals/approval-rules.js.map +2 -2
- package/dist/approvals/use-cases.const.d.ts +8 -0
- package/dist/approvals/use-cases.const.js +7 -0
- package/dist/approvals/use-cases.const.js.map +2 -2
- package/dist/dtos/ActiveUsers.dto.d.ts +11 -0
- package/dist/dtos/ActiveUsers.dto.js +1 -0
- package/dist/dtos/ActiveUsers.dto.js.map +7 -0
- package/dist/dtos/FleetStats.dto.d.ts +22 -0
- package/dist/dtos/FleetStats.dto.js +1 -0
- package/dist/dtos/FleetStats.dto.js.map +7 -0
- package/dist/dtos/Hdp.dto.d.ts +13 -5
- package/dist/enums/ErrorType.enum.d.ts +1 -0
- package/dist/enums/ErrorType.enum.js +1 -0
- package/dist/enums/ErrorType.enum.js.map +2 -2
- package/dist/index.d.ts +3 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +2 -2
- package/dist/permissions/accounts.permissions.d.ts +9 -0
- package/dist/permissions/accounts.permissions.js +21 -0
- package/dist/permissions/accounts.permissions.js.map +2 -2
- package/dist/permissions/combo.js +7 -0
- package/dist/permissions/combo.js.map +2 -2
- package/package.json +1 -1
|
@@ -132,6 +132,10 @@ export declare const APPROVAL_RULES: {
|
|
|
132
132
|
readonly "change-generation-versions": {
|
|
133
133
|
readonly prod: 2;
|
|
134
134
|
};
|
|
135
|
+
readonly "change-org-reservations": {
|
|
136
|
+
readonly prod: 2;
|
|
137
|
+
readonly testStages: 1;
|
|
138
|
+
};
|
|
135
139
|
readonly "cluster-bulk-generation-update": {
|
|
136
140
|
readonly prod: 2;
|
|
137
141
|
readonly testStages: 1;
|
|
@@ -42,6 +42,10 @@ const APPROVAL_RULES = {
|
|
|
42
42
|
[T.moveClusterOrg]: { prod: 2 },
|
|
43
43
|
[T.editGeneration]: { prod: 2 },
|
|
44
44
|
[T.changeGenerationVersions]: { prod: 2 },
|
|
45
|
+
// A reservation is a commercial commitment that the customer pays for, and
|
|
46
|
+
// the force path skips every check of the sales plan. Four eyes on prod.
|
|
47
|
+
// On the test stages a holder does it alone, as the direct route did.
|
|
48
|
+
[T.changeOrgReservations]: { prod: 2, testStages: 1 },
|
|
45
49
|
// One decision changes many clusters. A deletion cannot be undone, so it
|
|
46
50
|
// needs six eyes on prod. On the test stages, the opener runs every other
|
|
47
51
|
// type alone: the console team rolls out generations there with no second
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/approvals/approval-rules.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 { Stage } from '../constants/misc.const.js'\nimport {\n type ApprovalUseCaseType,\n APPROVAL_USE_CASE_TYPES as T,\n} from './use-cases.const.js'\n\n/**\n * The approvals of one type of request.\n *\n * The count is the number of approvals from holders of the run permissions of\n * the request (`requiredPermissions`). The opener counts too: when the opener\n * holds every run permission, the request gets the approval of the opener\n * when it is created. The opener cannot approve the request by hand\n * (`canAcknowledge`).\n */\nexport interface ApprovalRule {\n /** The approvals on prod. */\n prod: number\n /** The approvals on int, and on dev and local unless `dev` is set. When it is not set, `prod` applies. */\n testStages?: number\n /** The approvals on dev and local. When it is not set, `testStages` applies. */\n dev?: number\n}\n\n/**\n * How many approvals each type of request needs. This table is the one source\n * of that number, for control-backend, control-frontend, and the routes of\n * accounts and console that run an approved action.\n *\n * - **0**: no approval. Only a holder, or a person whom the use case opens the\n * request to, can open it.\n * - **1**: a holder does the action alone. The request of a holder runs when\n * it is created. The request of a person who is not a holder waits for one\n * holder.\n * - **2**: four eyes. The request of a holder waits for one other holder. The\n * request of a person who is not a holder waits for two holders.\n * - **3**: six eyes on prod.\n *\n * Before #10483 a use case counted only the approvals of people other than\n * the opener. Thus an old count and a count of this table are not the same\n * unit.\n */\nexport const APPROVAL_RULES = {\n // No approval. A use case that is open to every Camundi, or that only a\n // system opens.\n [T.clusterTtlDeletion]: { prod: 0 },\n [T.createPersonalOrganisation]: { prod: 0 },\n [T.createCustomHardwareSizing]: { prod: 0 },\n [T.removeCustomHardwareSizing]: { prod: 0 },\n [T.createCustomGeneration]: { prod: 0 },\n [T.removeCustomGeneration]: { prod: 0 },\n [T.selfServiceClusterModification]: { prod: 0 },\n // Only the run of a grant opens it, as the system, and it runs by itself at\n // the end of the grant. Ending a grant takes power away.\n [T.revokeApprovalOverride]: { prod: 0 },\n\n // A holder does it alone. Before #10483 a holder did these actions in\n // accounts-frontend or console-frontend with no second person.\n [T.extendTrial]: { prod: 1 },\n [T.changeOrgLimits]: { prod: 1 },\n [T.llmBudgetTopUp]: { prod: 1 },\n [T.changeSalesPlan]: { prod: 1 },\n [T.requestInNegotiation]: { prod: 1 },\n [T.onboardToEnterprise]: { prod: 1 },\n [T.automatedEnterpriseOnboarding]: { prod: 1 },\n [T.changeClusterPlanType]: { prod: 1 },\n [T.deleteInternalBackup]: { prod: 1 },\n [T.releaseTrainPublish]: { prod: 1 },\n [T.releaseTrainRollback]: { prod: 1 },\n\n // Four eyes. The action removes data or access, changes a person, moves a\n // cluster to another customer, or restarts every cluster of a generation.\n [T.changePlatformRoles]: { prod: 2 },\n [T.changeUserEmail]: { prod: 2 },\n [T.deleteUser]: { prod: 2 },\n [T.removeOrgMember]: { prod: 2 },\n [T.purgeUsers]: { prod: 2 },\n [T.updateUserMetadata]: { prod: 2 },\n [T.deleteOrganization]: { prod: 2 },\n [T.sendToExpiredTrial]: { prod: 2 },\n [T.deleteSsoConnection]: { prod: 2 },\n [T.deleteApiClient]: { prod: 2 },\n [T.moveClusterOrg]: { prod: 2 },\n [T.editGeneration]: { prod: 2 },\n [T.changeGenerationVersions]: { prod: 2 },\n\n // One decision changes many clusters. A deletion cannot be undone, so it\n // needs six eyes on prod. On the test stages, the opener runs every other\n // type alone: the console team rolls out generations there with no second\n // person.\n [T.clusterBulkGenerationUpdate]: { prod: 2, testStages: 1 },\n [T.clusterBulkPlanUpdate]: { prod: 2, testStages: 1 },\n [T.clusterBulkPlanTypeUpdate]: { prod: 2, testStages: 1 },\n [T.clusterBulkSleepWakeup]: { prod: 2, testStages: 1 },\n [T.clusterBulkSpecUpdate]: { prod: 2, testStages: 1 },\n [T.clusterBulkDeletion]: { prod: 3, testStages: 2 },\n [T.deleteClusterCorpses]: { prod: 3, testStages: 2 },\n [T.forceDeleteClusterPlanType]: { prod: 3, testStages: 2 },\n // The contract of an enterprise customer sets what the customer pays for.\n // On prod the opener and one other holder. On the test stages a holder\n // changes a test contract alone.\n [T.changeEnterpriseContract]: { prod: 2, testStages: 1 },\n // A shorter retention limit deletes the old data of every cluster of the\n // plan type.\n [T.changePlanTypeRetentionLimits]: { prod: 3, testStages: 2 },\n\n // A generation upgrade of one cluster that skips the upgrade graph\n // (`--yolo`) or the upgrade gate. The gate keeps an upgrade from a cluster\n // that has not finished its last migration, so a forced upgrade on prod\n // needs the opener and one other holder. On the test stages the opener\n // runs it alone.\n [T.forceGenerationUpgrade]: { prod: 2, testStages: 1 },\n // The deletion of the managed LLM tenant removes the key and the spend\n // history, and nothing brings them back. Four eyes on prod. On the test\n // stages the opener does it alone, as the direct route did before.\n [T.deleteManagedLlmTenant]: { prod: 2, testStages: 1 },\n\n // A flag of prod turns a feature on or off for every customer.\n [T.changeFeatureFlag]: { prod: 3, testStages: 2 },\n // Turning a flag off lowers the risk, thus it needs fewer approvals than a\n // change. On prod the opener with `aafw` gives one, and one other holder\n // gives the second. On int the opener with `aafw` does it alone. On dev\n // and local no approval is needed: opening the request runs it.\n [T.disableFeatureFlag]: { prod: 2, testStages: 1, dev: 0 },\n\n // The licensing model sets which value metrics an enterprise customer pays\n // for. On prod the opener and one other holder. On the test stages a holder\n // changes a test organization alone.\n [T.changeLicensingModel]: { prod: 2, testStages: 1 },\n\n // A grant lets one Camundi run many requests with no second person. The\n // opener and one other holder, on every stage. The grantee approves\n // neither by hand nor when they open it, thus a grant for oneself needs\n // two other holders. The console team has three people, so a third\n // approval would block a grant for oneself.\n [T.grantApprovalOverride]: { prod: 2 },\n} as const satisfies Record<ApprovalUseCaseType, ApprovalRule>\n\n/** The types whose count on the test stages is not the count on prod. */\nexport type StageDependentApprovalType = {\n [K in ApprovalUseCaseType]: (typeof APPROVAL_RULES)[K] extends {\n testStages: number\n }\n ? K\n : (typeof APPROVAL_RULES)[K] extends { dev: number }\n ? K\n : never\n}[ApprovalUseCaseType]\n\n/** The approvals that a request of `type` needs on `stage`. */\nexport function approvalsRequiredFor(\n type: ApprovalUseCaseType,\n stage: Stage,\n): number {\n const rule: ApprovalRule = APPROVAL_RULES[type]\n if (stage === 'prod') {\n return rule.prod\n }\n const testStages = rule.testStages ?? rule.prod\n return stage === 'int' ? testStages : (rule.dev ?? testStages)\n}\n"],
|
|
5
|
-
"mappings": "AAOA;AAAA,EAEE,2BAA2B;AAAA,OACtB;AAsCA,MAAM,iBAAiB;AAAA;AAAA;AAAA,EAG5B,CAAC,EAAE,kBAAkB,GAAG,EAAE,MAAM,EAAE;AAAA,EAClC,CAAC,EAAE,0BAA0B,GAAG,EAAE,MAAM,EAAE;AAAA,EAC1C,CAAC,EAAE,0BAA0B,GAAG,EAAE,MAAM,EAAE;AAAA,EAC1C,CAAC,EAAE,0BAA0B,GAAG,EAAE,MAAM,EAAE;AAAA,EAC1C,CAAC,EAAE,sBAAsB,GAAG,EAAE,MAAM,EAAE;AAAA,EACtC,CAAC,EAAE,sBAAsB,GAAG,EAAE,MAAM,EAAE;AAAA,EACtC,CAAC,EAAE,8BAA8B,GAAG,EAAE,MAAM,EAAE;AAAA;AAAA;AAAA,EAG9C,CAAC,EAAE,sBAAsB,GAAG,EAAE,MAAM,EAAE;AAAA;AAAA;AAAA,EAItC,CAAC,EAAE,WAAW,GAAG,EAAE,MAAM,EAAE;AAAA,EAC3B,CAAC,EAAE,eAAe,GAAG,EAAE,MAAM,EAAE;AAAA,EAC/B,CAAC,EAAE,cAAc,GAAG,EAAE,MAAM,EAAE;AAAA,EAC9B,CAAC,EAAE,eAAe,GAAG,EAAE,MAAM,EAAE;AAAA,EAC/B,CAAC,EAAE,oBAAoB,GAAG,EAAE,MAAM,EAAE;AAAA,EACpC,CAAC,EAAE,mBAAmB,GAAG,EAAE,MAAM,EAAE;AAAA,EACnC,CAAC,EAAE,6BAA6B,GAAG,EAAE,MAAM,EAAE;AAAA,EAC7C,CAAC,EAAE,qBAAqB,GAAG,EAAE,MAAM,EAAE;AAAA,EACrC,CAAC,EAAE,oBAAoB,GAAG,EAAE,MAAM,EAAE;AAAA,EACpC,CAAC,EAAE,mBAAmB,GAAG,EAAE,MAAM,EAAE;AAAA,EACnC,CAAC,EAAE,oBAAoB,GAAG,EAAE,MAAM,EAAE;AAAA;AAAA;AAAA,EAIpC,CAAC,EAAE,mBAAmB,GAAG,EAAE,MAAM,EAAE;AAAA,EACnC,CAAC,EAAE,eAAe,GAAG,EAAE,MAAM,EAAE;AAAA,EAC/B,CAAC,EAAE,UAAU,GAAG,EAAE,MAAM,EAAE;AAAA,EAC1B,CAAC,EAAE,eAAe,GAAG,EAAE,MAAM,EAAE;AAAA,EAC/B,CAAC,EAAE,UAAU,GAAG,EAAE,MAAM,EAAE;AAAA,EAC1B,CAAC,EAAE,kBAAkB,GAAG,EAAE,MAAM,EAAE;AAAA,EAClC,CAAC,EAAE,kBAAkB,GAAG,EAAE,MAAM,EAAE;AAAA,EAClC,CAAC,EAAE,kBAAkB,GAAG,EAAE,MAAM,EAAE;AAAA,EAClC,CAAC,EAAE,mBAAmB,GAAG,EAAE,MAAM,EAAE;AAAA,EACnC,CAAC,EAAE,eAAe,GAAG,EAAE,MAAM,EAAE;AAAA,EAC/B,CAAC,EAAE,cAAc,GAAG,EAAE,MAAM,EAAE;AAAA,EAC9B,CAAC,EAAE,cAAc,GAAG,EAAE,MAAM,EAAE;AAAA,EAC9B,CAAC,EAAE,wBAAwB,GAAG,EAAE,MAAM,EAAE;AAAA;AAAA;AAAA;AAAA;AAAA,
|
|
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 { Stage } from '../constants/misc.const.js'\nimport {\n type ApprovalUseCaseType,\n APPROVAL_USE_CASE_TYPES as T,\n} from './use-cases.const.js'\n\n/**\n * The approvals of one type of request.\n *\n * The count is the number of approvals from holders of the run permissions of\n * the request (`requiredPermissions`). The opener counts too: when the opener\n * holds every run permission, the request gets the approval of the opener\n * when it is created. The opener cannot approve the request by hand\n * (`canAcknowledge`).\n */\nexport interface ApprovalRule {\n /** The approvals on prod. */\n prod: number\n /** The approvals on int, and on dev and local unless `dev` is set. When it is not set, `prod` applies. */\n testStages?: number\n /** The approvals on dev and local. When it is not set, `testStages` applies. */\n dev?: number\n}\n\n/**\n * How many approvals each type of request needs. This table is the one source\n * of that number, for control-backend, control-frontend, and the routes of\n * accounts and console that run an approved action.\n *\n * - **0**: no approval. Only a holder, or a person whom the use case opens the\n * request to, can open it.\n * - **1**: a holder does the action alone. The request of a holder runs when\n * it is created. The request of a person who is not a holder waits for one\n * holder.\n * - **2**: four eyes. The request of a holder waits for one other holder. The\n * request of a person who is not a holder waits for two holders.\n * - **3**: six eyes on prod.\n *\n * Before #10483 a use case counted only the approvals of people other than\n * the opener. Thus an old count and a count of this table are not the same\n * unit.\n */\nexport const APPROVAL_RULES = {\n // No approval. A use case that is open to every Camundi, or that only a\n // system opens.\n [T.clusterTtlDeletion]: { prod: 0 },\n [T.createPersonalOrganisation]: { prod: 0 },\n [T.createCustomHardwareSizing]: { prod: 0 },\n [T.removeCustomHardwareSizing]: { prod: 0 },\n [T.createCustomGeneration]: { prod: 0 },\n [T.removeCustomGeneration]: { prod: 0 },\n [T.selfServiceClusterModification]: { prod: 0 },\n // Only the run of a grant opens it, as the system, and it runs by itself at\n // the end of the grant. Ending a grant takes power away.\n [T.revokeApprovalOverride]: { prod: 0 },\n\n // A holder does it alone. Before #10483 a holder did these actions in\n // accounts-frontend or console-frontend with no second person.\n [T.extendTrial]: { prod: 1 },\n [T.changeOrgLimits]: { prod: 1 },\n [T.llmBudgetTopUp]: { prod: 1 },\n [T.changeSalesPlan]: { prod: 1 },\n [T.requestInNegotiation]: { prod: 1 },\n [T.onboardToEnterprise]: { prod: 1 },\n [T.automatedEnterpriseOnboarding]: { prod: 1 },\n [T.changeClusterPlanType]: { prod: 1 },\n [T.deleteInternalBackup]: { prod: 1 },\n [T.releaseTrainPublish]: { prod: 1 },\n [T.releaseTrainRollback]: { prod: 1 },\n\n // Four eyes. The action removes data or access, changes a person, moves a\n // cluster to another customer, or restarts every cluster of a generation.\n [T.changePlatformRoles]: { prod: 2 },\n [T.changeUserEmail]: { prod: 2 },\n [T.deleteUser]: { prod: 2 },\n [T.removeOrgMember]: { prod: 2 },\n [T.purgeUsers]: { prod: 2 },\n [T.updateUserMetadata]: { prod: 2 },\n [T.deleteOrganization]: { prod: 2 },\n [T.sendToExpiredTrial]: { prod: 2 },\n [T.deleteSsoConnection]: { prod: 2 },\n [T.deleteApiClient]: { prod: 2 },\n [T.moveClusterOrg]: { prod: 2 },\n [T.editGeneration]: { prod: 2 },\n [T.changeGenerationVersions]: { prod: 2 },\n\n // A reservation is a commercial commitment that the customer pays for, and\n // the force path skips every check of the sales plan. Four eyes on prod.\n // On the test stages a holder does it alone, as the direct route did.\n [T.changeOrgReservations]: { prod: 2, testStages: 1 },\n\n // One decision changes many clusters. A deletion cannot be undone, so it\n // needs six eyes on prod. On the test stages, the opener runs every other\n // type alone: the console team rolls out generations there with no second\n // person.\n [T.clusterBulkGenerationUpdate]: { prod: 2, testStages: 1 },\n [T.clusterBulkPlanUpdate]: { prod: 2, testStages: 1 },\n [T.clusterBulkPlanTypeUpdate]: { prod: 2, testStages: 1 },\n [T.clusterBulkSleepWakeup]: { prod: 2, testStages: 1 },\n [T.clusterBulkSpecUpdate]: { prod: 2, testStages: 1 },\n [T.clusterBulkDeletion]: { prod: 3, testStages: 2 },\n [T.deleteClusterCorpses]: { prod: 3, testStages: 2 },\n [T.forceDeleteClusterPlanType]: { prod: 3, testStages: 2 },\n // The contract of an enterprise customer sets what the customer pays for.\n // On prod the opener and one other holder. On the test stages a holder\n // changes a test contract alone.\n [T.changeEnterpriseContract]: { prod: 2, testStages: 1 },\n // A shorter retention limit deletes the old data of every cluster of the\n // plan type.\n [T.changePlanTypeRetentionLimits]: { prod: 3, testStages: 2 },\n\n // A generation upgrade of one cluster that skips the upgrade graph\n // (`--yolo`) or the upgrade gate. The gate keeps an upgrade from a cluster\n // that has not finished its last migration, so a forced upgrade on prod\n // needs the opener and one other holder. On the test stages the opener\n // runs it alone.\n [T.forceGenerationUpgrade]: { prod: 2, testStages: 1 },\n // The deletion of the managed LLM tenant removes the key and the spend\n // history, and nothing brings them back. Four eyes on prod. On the test\n // stages the opener does it alone, as the direct route did before.\n [T.deleteManagedLlmTenant]: { prod: 2, testStages: 1 },\n\n // A flag of prod turns a feature on or off for every customer.\n [T.changeFeatureFlag]: { prod: 3, testStages: 2 },\n // Turning a flag off lowers the risk, thus it needs fewer approvals than a\n // change. On prod the opener with `aafw` gives one, and one other holder\n // gives the second. On int the opener with `aafw` does it alone. On dev\n // and local no approval is needed: opening the request runs it.\n [T.disableFeatureFlag]: { prod: 2, testStages: 1, dev: 0 },\n\n // The licensing model sets which value metrics an enterprise customer pays\n // for. On prod the opener and one other holder. On the test stages a holder\n // changes a test organization alone.\n [T.changeLicensingModel]: { prod: 2, testStages: 1 },\n\n // A grant lets one Camundi run many requests with no second person. The\n // opener and one other holder, on every stage. The grantee approves\n // neither by hand nor when they open it, thus a grant for oneself needs\n // two other holders. The console team has three people, so a third\n // approval would block a grant for oneself.\n [T.grantApprovalOverride]: { prod: 2 },\n} as const satisfies Record<ApprovalUseCaseType, ApprovalRule>\n\n/** The types whose count on the test stages is not the count on prod. */\nexport type StageDependentApprovalType = {\n [K in ApprovalUseCaseType]: (typeof APPROVAL_RULES)[K] extends {\n testStages: number\n }\n ? K\n : (typeof APPROVAL_RULES)[K] extends { dev: number }\n ? K\n : never\n}[ApprovalUseCaseType]\n\n/** The approvals that a request of `type` needs on `stage`. */\nexport function approvalsRequiredFor(\n type: ApprovalUseCaseType,\n stage: Stage,\n): number {\n const rule: ApprovalRule = APPROVAL_RULES[type]\n if (stage === 'prod') {\n return rule.prod\n }\n const testStages = rule.testStages ?? rule.prod\n return stage === 'int' ? testStages : (rule.dev ?? testStages)\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -26,6 +26,7 @@ export declare const APPROVAL_USE_CASE_TYPES: {
|
|
|
26
26
|
readonly changePlatformRoles: "change-platform-roles";
|
|
27
27
|
readonly deleteInternalBackup: "delete-internal-backup";
|
|
28
28
|
readonly changeOrgLimits: "change-org-limits";
|
|
29
|
+
readonly changeOrgReservations: "change-org-reservations";
|
|
29
30
|
readonly deleteSsoConnection: "delete-sso-connection";
|
|
30
31
|
readonly changeSalesPlan: "change-sales-plan";
|
|
31
32
|
readonly llmBudgetTopUp: "llm-budget-top-up";
|
|
@@ -210,6 +211,13 @@ export declare const ENTERPRISE_ONBOARDING_METRIC_MAX = 1000000000000;
|
|
|
210
211
|
* carry a count that the plan refuses.
|
|
211
212
|
*/
|
|
212
213
|
export declare const ENTERPRISE_ONBOARDING_RESERVATION_MAX = 20;
|
|
214
|
+
/**
|
|
215
|
+
* The most clusters of one plan type that a change-org-reservations request
|
|
216
|
+
* reserves. The approval route of accounts-ng has the same bound.
|
|
217
|
+
* `PATCH /api/salesplans/reserved` has no bound. A request with `force`
|
|
218
|
+
* skips the maximum of the sales plan, thus this bound is its only bound.
|
|
219
|
+
*/
|
|
220
|
+
export declare const ORG_RESERVATION_MAX = 1000;
|
|
213
221
|
/**
|
|
214
222
|
* Whether a string is a calendar day, `YYYY-MM-DD`, that exists.
|
|
215
223
|
*
|
|
@@ -16,6 +16,11 @@ const APPROVAL_USE_CASE_TYPES = {
|
|
|
16
16
|
changePlatformRoles: "change-platform-roles",
|
|
17
17
|
deleteInternalBackup: "delete-internal-backup",
|
|
18
18
|
changeOrgLimits: "change-org-limits",
|
|
19
|
+
// The cluster reservations of one organization, behind
|
|
20
|
+
// `control.camundiApprovalFlow`. It is not the enterprise contract: a
|
|
21
|
+
// reservation change and a contract change are two requests. See
|
|
22
|
+
// `change-org-reservations.ts` in control-backend.
|
|
23
|
+
changeOrgReservations: "change-org-reservations",
|
|
19
24
|
deleteSsoConnection: "delete-sso-connection",
|
|
20
25
|
changeSalesPlan: "change-sales-plan",
|
|
21
26
|
llmBudgetTopUp: "llm-budget-top-up",
|
|
@@ -162,6 +167,7 @@ const ENTERPRISE_ONBOARDING_TERM_MIN_MONTHS = 1;
|
|
|
162
167
|
const ENTERPRISE_ONBOARDING_TERM_MAX_MONTHS = 60;
|
|
163
168
|
const ENTERPRISE_ONBOARDING_METRIC_MAX = 1e12;
|
|
164
169
|
const ENTERPRISE_ONBOARDING_RESERVATION_MAX = 20;
|
|
170
|
+
const ORG_RESERVATION_MAX = 1e3;
|
|
165
171
|
const isCalendarDay = (value) => /^\d{4}-\d{2}-\d{2}$/.test(value) && !Number.isNaN(Date.parse(value)) && new Date(value).toISOString().startsWith(value);
|
|
166
172
|
const enterpriseContractChangePermissions = (changesStartDate) => changesStartDate ? [
|
|
167
173
|
AccountsPermissions.ENTERPRISE_ORG_MODIFY,
|
|
@@ -193,6 +199,7 @@ export {
|
|
|
193
199
|
GENERATION_VERSION_VALUE_MAX_LENGTH,
|
|
194
200
|
LLM_BUDGET_TOP_UP_THRESHOLD,
|
|
195
201
|
ORG_LIMIT_TEXT_MAX_LENGTH,
|
|
202
|
+
ORG_RESERVATION_MAX,
|
|
196
203
|
PERSONAL_ORGANIZATION_MAX_PER_REQUESTER,
|
|
197
204
|
PERSONAL_ORGANIZATION_NAME_MAX_LENGTH,
|
|
198
205
|
PERSONAL_ORGANIZATION_NAME_MIN_LENGTH,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/approvals/use-cases.const.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 { AccountsPermissions } from '../permissions/accounts.permissions.js'\n\n/**\n * The names and the value ranges of the registered use cases.\n *\n * control-backend owns the registry, and a frontend reads it at run time\n * (`GET /api/approvals/use-cases`). Two things cannot wait for that answer:\n *\n * - **The identifier**, because a caller must NAME a use case to find it in the\n * registry, and to open a request of it.\n * - **The range of a payload field**, because a form holds the value before any\n * call goes out.\n *\n * Both live here, so the schema of the service and the form of the browser can\n * never hold different numbers.\n */\n\n/** The identifier of each use case, on the wire and in the table. */\nexport const APPROVAL_USE_CASE_TYPES = {\n sendToExpiredTrial: 'send-to-expired-trial',\n extendTrial: 'extend-trial',\n moveClusterOrg: 'move-cluster-org',\n // One use case for each type of a cluster bulk operation. The types need\n // different permissions and different approval counts, and a use case holds\n // one of each. See `cluster-bulk-operation.ts` beside this file.\n clusterBulkGenerationUpdate: 'cluster-bulk-generation-update',\n clusterBulkPlanUpdate: 'cluster-bulk-plan-update',\n clusterBulkPlanTypeUpdate: 'cluster-bulk-plan-type-update',\n clusterBulkSleepWakeup: 'cluster-bulk-sleep-wakeup',\n clusterBulkDeletion: 'cluster-bulk-deletion',\n clusterBulkSpecUpdate: 'cluster-bulk-spec-update',\n // The second group, behind `control.camundiApprovalFlow`.\n changePlatformRoles: 'change-platform-roles',\n deleteInternalBackup: 'delete-internal-backup',\n changeOrgLimits: 'change-org-limits',\n deleteSsoConnection: 'delete-sso-connection',\n changeSalesPlan: 'change-sales-plan',\n llmBudgetTopUp: 'llm-budget-top-up',\n requestInNegotiation: 'request-in-negotiation',\n removeOrgMember: 'remove-org-member',\n // The third group, behind `control.camundiApprovalFlow`.\n deleteOrganization: 'delete-organization',\n deleteUser: 'delete-user',\n changeUserEmail: 'change-user-email',\n purgeUsers: 'purge-users',\n updateUserMetadata: 'update-user-metadata',\n // A change of the feature flag table, on a stage where\n // `isFeatureFlagApprovalRequired` is true.\n changeFeatureFlag: 'change-feature-flag',\n // Turns one flag off, and nothing else. A rollback needs fewer approvals\n // than a change.\n disableFeatureFlag: 'disable-feature-flag',\n // The publish and the rollback of a release-train generation. See\n // `release-train.ts` beside this file.\n releaseTrainPublish: 'release-train-publish',\n releaseTrainRollback: 'release-train-rollback',\n // Open to every Camundi, and it needs no approval on any stage.\n createPersonalOrganisation: 'create-personal-organisation',\n // Open to every Camundi, runs on dev only, and needs no approval. The two\n // use cases of custom hardware sizing.\n createCustomHardwareSizing: 'create-custom-hardware-sizing',\n removeCustomHardwareSizing: 'remove-custom-hardware-sizing',\n // The mutable versions of one or more generations, behind\n // `control.camundiApprovalFlow`. Console restarts every cluster of\n // each generation, which is why the write needs a second Camundi.\n changeGenerationVersions: 'change-generation-versions',\n // The name and the env vars of one generation, behind\n // `control.camundiApprovalFlow`. Console sends a new spec to every cluster of\n // the generation, which is why the write needs a second Camundi.\n editGeneration: 'edit-generation',\n // A new enterprise customer: a production and a development organization\n // in one step, behind `control.camundiApprovalFlow`. See\n // `automated-enterprise-onboarding.ts` in control-backend.\n automatedEnterpriseOnboarding: 'automated-enterprise-onboarding',\n // Open to every Camundi, runs on dev only, and needs no approval. The two\n // use cases of custom generations.\n createCustomGeneration: 'create-custom-generation',\n removeCustomGeneration: 'remove-custom-generation',\n // Open to org owners, runs on dev only, and needs no approval. It applies\n // or deactivates a cluster modification config of one cluster.\n selfServiceClusterModification: 'self-service-cluster-modification',\n // The enterprise onboarding of one organization, behind\n // `control.camundiApprovalFlow`: the contract, the plan type of\n // each cluster, and the reservations, in one request.\n onboardToEnterprise: 'onboard-to-enterprise',\n // The term, the start date and the included value metrics of the contract\n // of one enterprise organization, behind `control.camundiApprovalFlow`. See\n // `change-enterprise-contract.ts` in control-backend.\n changeEnterpriseContract: 'change-enterprise-contract',\n // The plan type and the hardware packages of ONE cluster, behind\n // `control.camundiApprovalFlow`. The bulk plan type update beside it also\n // checks the reservations and moves the cluster plan, but each cluster\n // keeps its packages there. This one can change the packages, and it has a\n // stale guard. See `change-cluster-plan-type.ts` in control-backend.\n changeClusterPlanType: 'change-cluster-plan-type',\n // The deletion of one cluster whose TTL ran out. Only the delete cron of\n // console-backend opens it, and it needs no approval. It is a record of the\n // deletion. See `cluster-ttl-deletion.ts` in control-backend.\n clusterTtlDeletion: 'cluster-ttl-deletion',\n // The deletion of the DB corpses or of the Kubernetes corpses that console\n // finds, behind `control.camundiApprovalFlow`. See\n // `delete-cluster-corpses.ts` in control-backend.\n deleteClusterCorpses: 'delete-cluster-corpses',\n // The force delete of a cluster plan type and of every cluster on it,\n // behind `control.camundiApprovalFlow`. See\n // `force-delete-cluster-plan-type.ts` in control-backend.\n forceDeleteClusterPlanType: 'force-delete-cluster-plan-type',\n // A change of the data retention limits of a cluster plan type, which\n // console sends to every cluster of the type. Behind\n // `control.camundiApprovalFlow`. See\n // `change-plan-type-retention-limits.ts` in control-backend.\n changePlanTypeRetentionLimits: 'change-plan-type-retention-limits',\n // The generation upgrade of one cluster with `--yolo` or with the upgrade\n // gate ignored, behind `control.camundiApprovalFlow`. A plain upgrade stays\n // a direct call. See `force-generation-upgrade.ts` in control-backend.\n forceGenerationUpgrade: 'force-generation-upgrade',\n // The deletion of one Console API client of an organization. See\n // `delete-api-client.ts` in control-backend.\n deleteApiClient: 'delete-api-client',\n // The licensing model of one enterprise organization, behind\n // `control.camundiApprovalFlow`. See `change-licensing-model.ts` in\n // control-backend.\n changeLicensingModel: 'change-licensing-model',\n // A time-limited grant that lets one Camundi run a pending request with no\n // approval, and the scheduled request that ends it. Behind\n // `control.approvalOverride`. See `approval-override.ts` in control-backend.\n grantApprovalOverride: 'grant-approval-override',\n revokeApprovalOverride: 'revoke-approval-override',\n // The deletion of the managed LLM tenant of one organization: the tenant,\n // the key and the spend history. Behind `control.camundiApprovalFlow`. See\n // `delete-managed-llm-tenant.ts` in control-backend.\n deleteManagedLlmTenant: 'delete-managed-llm-tenant',\n} as const\n\n/** The longest approval override grant, in hours: 14 days. */\nexport const APPROVAL_OVERRIDE_MAX_HOURS = 14 * 24\n\n/** The duration that the form of control-frontend offers first: one day. */\nexport const APPROVAL_OVERRIDE_DEFAULT_HOURS = 24\n\n/**\n * The use cases that an approval override grant can NOT run.\n *\n * Every other use case is overridable. These change who holds a permission,\n * the override mechanism itself, the feature flags of a stage, the address\n * that a person signs in with, or delete customer data, a backup, a sign-in\n * path, or a whole fleet of clusters. None of them is an emergency that one\n * Camundi must fix alone.\n *\n * The list fails open: a use case that is not here IS overridable. Thus a new\n * use case that deletes or that changes access must be added here. Its route\n * in accounts-backend or console-backend then refuses `overriddenBy` by\n * itself: `approvalActorSchemaFor` of their `AdminApprovalsRouter.ts` reads\n * this list.\n */\nexport const APPROVAL_OVERRIDE_DENYLIST: readonly string[] = [\n APPROVAL_USE_CASE_TYPES.changePlatformRoles,\n APPROVAL_USE_CASE_TYPES.grantApprovalOverride,\n APPROVAL_USE_CASE_TYPES.revokeApprovalOverride,\n APPROVAL_USE_CASE_TYPES.changeFeatureFlag,\n APPROVAL_USE_CASE_TYPES.disableFeatureFlag,\n APPROVAL_USE_CASE_TYPES.purgeUsers,\n APPROVAL_USE_CASE_TYPES.deleteUser,\n APPROVAL_USE_CASE_TYPES.deleteOrganization,\n APPROVAL_USE_CASE_TYPES.clusterBulkDeletion,\n APPROVAL_USE_CASE_TYPES.forceDeleteClusterPlanType,\n APPROVAL_USE_CASE_TYPES.releaseTrainPublish,\n APPROVAL_USE_CASE_TYPES.releaseTrainRollback,\n APPROVAL_USE_CASE_TYPES.deleteSsoConnection,\n APPROVAL_USE_CASE_TYPES.changeUserEmail,\n APPROVAL_USE_CASE_TYPES.deleteInternalBackup,\n APPROVAL_USE_CASE_TYPES.deleteApiClient,\n APPROVAL_USE_CASE_TYPES.removeOrgMember,\n APPROVAL_USE_CASE_TYPES.deleteManagedLlmTenant,\n]\n\n/** isApprovalOverridable reports whether a grant can run a request of this type. */\nexport const isApprovalOverridable = (type: string): boolean =>\n !APPROVAL_OVERRIDE_DENYLIST.includes(type)\n\n/**\n * The most personal organizations that one Camundi can request.\n *\n * The request runs with no approval, so this cap is the only guard against a\n * loop that creates organizations without end. It counts the requests that a\n * Camundi opened, and a person who needs more asks a Camundi who holds\n * `AccountsPermissions.CREATE_ORG`.\n */\nexport const PERSONAL_ORGANIZATION_MAX_PER_REQUESTER = 10\n\n/** The shortest and longest name of a personal organization. */\nexport const PERSONAL_ORGANIZATION_NAME_MIN_LENGTH = 3\nexport const PERSONAL_ORGANIZATION_NAME_MAX_LENGTH = 100\n\nexport type ApprovalUseCaseType =\n (typeof APPROVAL_USE_CASE_TYPES)[keyof typeof APPROVAL_USE_CASE_TYPES]\n\n/**\n * The shortest extension that accounts-backend accepts.\n *\n * `POST /:orgId/extendtrial` refuses a date that is less than 14 days away\n * when the body carries `onBehalfOf`, and it measures those 14 days when the\n * CALL arrives. The floor here is 15 and not 14, for two reasons:\n *\n * - The two clocks are not the same instant. Accounts builds its own \"14 days\n * from now\" a few milliseconds after control-backend builds the date, so a\n * date of exactly 14 days is already in the past for the comparison.\n * - Accounts counts with `setDate`, which is calendar arithmetic. A change of\n * the daylight saving time moves its limit by an hour.\n */\nexport const EXTEND_TRIAL_MIN_DAYS = 15\n\n/**\n * The longest extension that accounts-backend accepts.\n *\n * The same route refuses a date more than 62 days away. 61 keeps the same\n * margin as the floor above.\n */\nexport const EXTEND_TRIAL_MAX_DAYS = 61\n\n/**\n * The most roles that one change-platform-roles request adds, or removes.\n *\n * The form of control-frontend offers every platform role, and a person who\n * gives a Camundi a new position rarely changes more than a few. A request with\n * more roles than this is a request that nobody reads before they approve it.\n */\nexport const PLATFORM_ROLE_CHANGE_MAX_ROLES = 10\n\n/**\n * The longest text value that one change-org-limits request writes.\n *\n * A text limit holds a short value, such as a list of regions. The bound keeps\n * a request readable for the person who approves it.\n */\nexport const ORG_LIMIT_TEXT_MAX_LENGTH = 2000\n\n/**\n * LLM_BUDGET_TOP_UP_THRESHOLD is the share of the budget that the spend of a\n * managed LLM key must reach before a top-up is the normal case.\n *\n * A request below it is still possible, but the person who asks must confirm\n * it, and the request says so to the approver. Accounts refuses a top-up\n * below it that does not carry that confirmation.\n */\nexport const LLM_BUDGET_TOP_UP_THRESHOLD = 0.9\n\n/**\n * isLlmSpendBelowTopUpThreshold reports whether a top-up of a managed LLM key\n * needs the explicit confirmation of `LLM_BUDGET_TOP_UP_THRESHOLD`.\n */\nexport const isLlmSpendBelowTopUpThreshold = (\n spend: number,\n maxBudget: number,\n): boolean => spend < maxBudget * LLM_BUDGET_TOP_UP_THRESHOLD\n\n/**\n * The most users that one purge-users request deletes.\n *\n * The God Mode purge deletes one user after the other, and Auth0 limits how\n * fast that goes. A list longer than this is also a list that no approver\n * reads before they agree.\n */\nexport const PURGE_USERS_MAX_USERS = 1000\n\n/**\n * What a person must hold to open or to approve a purge-users request.\n *\n * The purge route of accounts, `DELETE /api/users/:userId/purge`, needs both\n * of the caller. The approval route of accounts checks both of the person who\n * asked, when control-backend sends `purge: true`. The use case of\n * control-backend returns this list from `permissionsFor`, and the form passes\n * it to `canCreate`, so the button and the server never disagree.\n */\nexport const PURGE_USERS_REQUIRED_PERMISSIONS: readonly string[] = [\n AccountsPermissions.GOD_PURGE_USERS,\n AccountsPermissions.DELETE_USER,\n]\n\n/**\n * What a person must hold to open or to approve a remove-org-member request,\n * with or without a new owner. CS holds it through the Camundi permission\n * rules. Accounts checks the same list for the person who asked.\n */\nexport const REMOVE_ORG_MEMBER_REQUIRED_PERMISSIONS: readonly string[] = [\n AccountsPermissions.REMOVE_FROM_ORG_WITH_APPROVAL,\n]\n\n/**\n * The largest metadata object that one update-user-metadata request writes,\n * in characters of its JSON text.\n *\n * This is a bound of the product, and not the limit of Auth0, which is far\n * larger. The approvers read the whole object before they agree, and an\n * object that is longer than this is an object that nobody reads.\n */\nexport const USER_METADATA_MAX_LENGTH = 16_000\n\n/**\n * The largest metadata object that a request carries as the object that the\n * person who asked READ.\n *\n * It is larger than `USER_METADATA_MAX_LENGTH`, so a user whose metadata grew\n * past that bound can still get an edit that makes it smaller. It still has a\n * bound, because the request keeps the copy in its row.\n */\nexport const USER_METADATA_EXPECTED_MAX_LENGTH = 500_000\n\n/**\n * The bounds of an automated-enterprise-onboarding request.\n *\n * The accounts wizard holds the first four, and the schema of control-backend\n * and the form of control-frontend read them here, so the form never sends\n * what the service refuses.\n */\nexport const ENTERPRISE_ONBOARDING_NAME_MAX_LENGTH = 50\nexport const ENTERPRISE_ONBOARDING_SFDC_ID_MAX_LENGTH = 50\nexport const ENTERPRISE_ONBOARDING_TERM_MIN_MONTHS = 1\nexport const ENTERPRISE_ONBOARDING_TERM_MAX_MONTHS = 60\n/** The most of one value metric that a contract includes. */\nexport const ENTERPRISE_ONBOARDING_METRIC_MAX = 1_000_000_000_000\n/**\n * The most clusters of one plan type that an onboarding reserves: the cap of\n * the accounts wizard. Accounts checks the limit of the plan only when it\n * reserves, after it created the two organizations, so the request must not\n * carry a count that the plan refuses.\n */\nexport const ENTERPRISE_ONBOARDING_RESERVATION_MAX = 20\n\n/**\n * Whether a string is a calendar day, `YYYY-MM-DD`, that exists.\n *\n * The shape alone is not enough: `Date` rolls `2026-02-30` to March 2 with\n * no error, and `2026-13-45` becomes an invalid date that a database refuses\n * only at the write. A request carries the day for days before it runs, so\n * the check is at the open, and in the form.\n */\nexport const isCalendarDay = (value: string): boolean =>\n /^\\d{4}-\\d{2}-\\d{2}$/.test(value) &&\n !Number.isNaN(Date.parse(value)) &&\n new Date(value).toISOString().startsWith(value)\n\n/**\n * What a person must hold to open or to approve a change-enterprise-contract\n * request.\n *\n * `PATCH /:orgId/enterprise` of accounts needs `ENTERPRISE_ORG_MODIFY`, and\n * also `ENTERPRISE_ORG_MODIFY_START_DATE` for a new start date. The approval\n * route of accounts checks the same list for the person who asked. The use\n * case of control-backend returns this list from `permissionsFor`, and the\n * form passes it to `canCreate`, so the button and the server never disagree.\n */\nexport const enterpriseContractChangePermissions = (\n changesStartDate: boolean,\n): string[] =>\n changesStartDate\n ? [\n AccountsPermissions.ENTERPRISE_ORG_MODIFY,\n AccountsPermissions.ENTERPRISE_ORG_MODIFY_START_DATE,\n ]\n : [AccountsPermissions.ENTERPRISE_ORG_MODIFY]\n\n/** The longest email address that a change-user-email request carries. */\nexport const APPROVAL_EMAIL_MAX_LENGTH = 320\n\n/**\n * The email addresses that a change-user-email request accepts.\n *\n * It is the email pattern of zod 4.6. The pattern is here, so the schema of\n * control-backend and the form of control-frontend accept the same addresses,\n * and a form never sends an address that the service refuses.\n */\nexport const APPROVAL_EMAIL_PATTERN =\n // biome-ignore lint/complexity/noUselessEscapeInRegex: the same source as zod, character for character\n /^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$/\n\n/**\n * The most generations that one change-generation-versions request changes.\n *\n * Each generation restarts every cluster on it. A request over more\n * generations than this is a request that no approver reads to the end.\n *\n * The two bounds of this use case also keep a request under the body limit\n * of control-backend (1 MiB, `server-options.ts` of the shared Fastify\n * layer): 20 generations, each with the expected value of the 2 image\n * versions of 2000 characters, is 80 000 characters before the rest of the\n * payload.\n */\nexport const GENERATION_VERSIONS_MAX_GENERATIONS = 20\n\n/**\n * The longest value of one mutable version of a generation.\n *\n * An image reference is short, and only the two image versions go through\n * the use case (`GENERATION_IMAGE_VERSION_KEYS`). The bound keeps a request\n * readable for the approver. See `GENERATION_VERSIONS_MAX_GENERATIONS` for\n * the sum.\n */\nexport const GENERATION_VERSION_VALUE_MAX_LENGTH = 2000\n"],
|
|
5
|
-
"mappings": "AAMA,SAAS,2BAA2B;AAkB7B,MAAM,0BAA0B;AAAA,EACrC,oBAAoB;AAAA,EACpB,aAAa;AAAA,EACb,gBAAgB;AAAA;AAAA;AAAA;AAAA,EAIhB,6BAA6B;AAAA,EAC7B,uBAAuB;AAAA,EACvB,2BAA2B;AAAA,EAC3B,wBAAwB;AAAA,EACxB,qBAAqB;AAAA,EACrB,uBAAuB;AAAA;AAAA,EAEvB,qBAAqB;AAAA,EACrB,sBAAsB;AAAA,EACtB,iBAAiB;AAAA,
|
|
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 { AccountsPermissions } from '../permissions/accounts.permissions.js'\n\n/**\n * The names and the value ranges of the registered use cases.\n *\n * control-backend owns the registry, and a frontend reads it at run time\n * (`GET /api/approvals/use-cases`). Two things cannot wait for that answer:\n *\n * - **The identifier**, because a caller must NAME a use case to find it in the\n * registry, and to open a request of it.\n * - **The range of a payload field**, because a form holds the value before any\n * call goes out.\n *\n * Both live here, so the schema of the service and the form of the browser can\n * never hold different numbers.\n */\n\n/** The identifier of each use case, on the wire and in the table. */\nexport const APPROVAL_USE_CASE_TYPES = {\n sendToExpiredTrial: 'send-to-expired-trial',\n extendTrial: 'extend-trial',\n moveClusterOrg: 'move-cluster-org',\n // One use case for each type of a cluster bulk operation. The types need\n // different permissions and different approval counts, and a use case holds\n // one of each. See `cluster-bulk-operation.ts` beside this file.\n clusterBulkGenerationUpdate: 'cluster-bulk-generation-update',\n clusterBulkPlanUpdate: 'cluster-bulk-plan-update',\n clusterBulkPlanTypeUpdate: 'cluster-bulk-plan-type-update',\n clusterBulkSleepWakeup: 'cluster-bulk-sleep-wakeup',\n clusterBulkDeletion: 'cluster-bulk-deletion',\n clusterBulkSpecUpdate: 'cluster-bulk-spec-update',\n // The second group, behind `control.camundiApprovalFlow`.\n changePlatformRoles: 'change-platform-roles',\n deleteInternalBackup: 'delete-internal-backup',\n changeOrgLimits: 'change-org-limits',\n // The cluster reservations of one organization, behind\n // `control.camundiApprovalFlow`. It is not the enterprise contract: a\n // reservation change and a contract change are two requests. See\n // `change-org-reservations.ts` in control-backend.\n changeOrgReservations: 'change-org-reservations',\n deleteSsoConnection: 'delete-sso-connection',\n changeSalesPlan: 'change-sales-plan',\n llmBudgetTopUp: 'llm-budget-top-up',\n requestInNegotiation: 'request-in-negotiation',\n removeOrgMember: 'remove-org-member',\n // The third group, behind `control.camundiApprovalFlow`.\n deleteOrganization: 'delete-organization',\n deleteUser: 'delete-user',\n changeUserEmail: 'change-user-email',\n purgeUsers: 'purge-users',\n updateUserMetadata: 'update-user-metadata',\n // A change of the feature flag table, on a stage where\n // `isFeatureFlagApprovalRequired` is true.\n changeFeatureFlag: 'change-feature-flag',\n // Turns one flag off, and nothing else. A rollback needs fewer approvals\n // than a change.\n disableFeatureFlag: 'disable-feature-flag',\n // The publish and the rollback of a release-train generation. See\n // `release-train.ts` beside this file.\n releaseTrainPublish: 'release-train-publish',\n releaseTrainRollback: 'release-train-rollback',\n // Open to every Camundi, and it needs no approval on any stage.\n createPersonalOrganisation: 'create-personal-organisation',\n // Open to every Camundi, runs on dev only, and needs no approval. The two\n // use cases of custom hardware sizing.\n createCustomHardwareSizing: 'create-custom-hardware-sizing',\n removeCustomHardwareSizing: 'remove-custom-hardware-sizing',\n // The mutable versions of one or more generations, behind\n // `control.camundiApprovalFlow`. Console restarts every cluster of\n // each generation, which is why the write needs a second Camundi.\n changeGenerationVersions: 'change-generation-versions',\n // The name and the env vars of one generation, behind\n // `control.camundiApprovalFlow`. Console sends a new spec to every cluster of\n // the generation, which is why the write needs a second Camundi.\n editGeneration: 'edit-generation',\n // A new enterprise customer: a production and a development organization\n // in one step, behind `control.camundiApprovalFlow`. See\n // `automated-enterprise-onboarding.ts` in control-backend.\n automatedEnterpriseOnboarding: 'automated-enterprise-onboarding',\n // Open to every Camundi, runs on dev only, and needs no approval. The two\n // use cases of custom generations.\n createCustomGeneration: 'create-custom-generation',\n removeCustomGeneration: 'remove-custom-generation',\n // Open to org owners, runs on dev only, and needs no approval. It applies\n // or deactivates a cluster modification config of one cluster.\n selfServiceClusterModification: 'self-service-cluster-modification',\n // The enterprise onboarding of one organization, behind\n // `control.camundiApprovalFlow`: the contract, the plan type of\n // each cluster, and the reservations, in one request.\n onboardToEnterprise: 'onboard-to-enterprise',\n // The term, the start date and the included value metrics of the contract\n // of one enterprise organization, behind `control.camundiApprovalFlow`. See\n // `change-enterprise-contract.ts` in control-backend.\n changeEnterpriseContract: 'change-enterprise-contract',\n // The plan type and the hardware packages of ONE cluster, behind\n // `control.camundiApprovalFlow`. The bulk plan type update beside it also\n // checks the reservations and moves the cluster plan, but each cluster\n // keeps its packages there. This one can change the packages, and it has a\n // stale guard. See `change-cluster-plan-type.ts` in control-backend.\n changeClusterPlanType: 'change-cluster-plan-type',\n // The deletion of one cluster whose TTL ran out. Only the delete cron of\n // console-backend opens it, and it needs no approval. It is a record of the\n // deletion. See `cluster-ttl-deletion.ts` in control-backend.\n clusterTtlDeletion: 'cluster-ttl-deletion',\n // The deletion of the DB corpses or of the Kubernetes corpses that console\n // finds, behind `control.camundiApprovalFlow`. See\n // `delete-cluster-corpses.ts` in control-backend.\n deleteClusterCorpses: 'delete-cluster-corpses',\n // The force delete of a cluster plan type and of every cluster on it,\n // behind `control.camundiApprovalFlow`. See\n // `force-delete-cluster-plan-type.ts` in control-backend.\n forceDeleteClusterPlanType: 'force-delete-cluster-plan-type',\n // A change of the data retention limits of a cluster plan type, which\n // console sends to every cluster of the type. Behind\n // `control.camundiApprovalFlow`. See\n // `change-plan-type-retention-limits.ts` in control-backend.\n changePlanTypeRetentionLimits: 'change-plan-type-retention-limits',\n // The generation upgrade of one cluster with `--yolo` or with the upgrade\n // gate ignored, behind `control.camundiApprovalFlow`. A plain upgrade stays\n // a direct call. See `force-generation-upgrade.ts` in control-backend.\n forceGenerationUpgrade: 'force-generation-upgrade',\n // The deletion of one Console API client of an organization. See\n // `delete-api-client.ts` in control-backend.\n deleteApiClient: 'delete-api-client',\n // The licensing model of one enterprise organization, behind\n // `control.camundiApprovalFlow`. See `change-licensing-model.ts` in\n // control-backend.\n changeLicensingModel: 'change-licensing-model',\n // A time-limited grant that lets one Camundi run a pending request with no\n // approval, and the scheduled request that ends it. Behind\n // `control.approvalOverride`. See `approval-override.ts` in control-backend.\n grantApprovalOverride: 'grant-approval-override',\n revokeApprovalOverride: 'revoke-approval-override',\n // The deletion of the managed LLM tenant of one organization: the tenant,\n // the key and the spend history. Behind `control.camundiApprovalFlow`. See\n // `delete-managed-llm-tenant.ts` in control-backend.\n deleteManagedLlmTenant: 'delete-managed-llm-tenant',\n} as const\n\n/** The longest approval override grant, in hours: 14 days. */\nexport const APPROVAL_OVERRIDE_MAX_HOURS = 14 * 24\n\n/** The duration that the form of control-frontend offers first: one day. */\nexport const APPROVAL_OVERRIDE_DEFAULT_HOURS = 24\n\n/**\n * The use cases that an approval override grant can NOT run.\n *\n * Every other use case is overridable. These change who holds a permission,\n * the override mechanism itself, the feature flags of a stage, the address\n * that a person signs in with, or delete customer data, a backup, a sign-in\n * path, or a whole fleet of clusters. None of them is an emergency that one\n * Camundi must fix alone.\n *\n * The list fails open: a use case that is not here IS overridable. Thus a new\n * use case that deletes or that changes access must be added here. Its route\n * in accounts-backend or console-backend then refuses `overriddenBy` by\n * itself: `approvalActorSchemaFor` of their `AdminApprovalsRouter.ts` reads\n * this list.\n */\nexport const APPROVAL_OVERRIDE_DENYLIST: readonly string[] = [\n APPROVAL_USE_CASE_TYPES.changePlatformRoles,\n APPROVAL_USE_CASE_TYPES.grantApprovalOverride,\n APPROVAL_USE_CASE_TYPES.revokeApprovalOverride,\n APPROVAL_USE_CASE_TYPES.changeFeatureFlag,\n APPROVAL_USE_CASE_TYPES.disableFeatureFlag,\n APPROVAL_USE_CASE_TYPES.purgeUsers,\n APPROVAL_USE_CASE_TYPES.deleteUser,\n APPROVAL_USE_CASE_TYPES.deleteOrganization,\n APPROVAL_USE_CASE_TYPES.clusterBulkDeletion,\n APPROVAL_USE_CASE_TYPES.forceDeleteClusterPlanType,\n APPROVAL_USE_CASE_TYPES.releaseTrainPublish,\n APPROVAL_USE_CASE_TYPES.releaseTrainRollback,\n APPROVAL_USE_CASE_TYPES.deleteSsoConnection,\n APPROVAL_USE_CASE_TYPES.changeUserEmail,\n APPROVAL_USE_CASE_TYPES.deleteInternalBackup,\n APPROVAL_USE_CASE_TYPES.deleteApiClient,\n APPROVAL_USE_CASE_TYPES.removeOrgMember,\n APPROVAL_USE_CASE_TYPES.deleteManagedLlmTenant,\n]\n\n/** isApprovalOverridable reports whether a grant can run a request of this type. */\nexport const isApprovalOverridable = (type: string): boolean =>\n !APPROVAL_OVERRIDE_DENYLIST.includes(type)\n\n/**\n * The most personal organizations that one Camundi can request.\n *\n * The request runs with no approval, so this cap is the only guard against a\n * loop that creates organizations without end. It counts the requests that a\n * Camundi opened, and a person who needs more asks a Camundi who holds\n * `AccountsPermissions.CREATE_ORG`.\n */\nexport const PERSONAL_ORGANIZATION_MAX_PER_REQUESTER = 10\n\n/** The shortest and longest name of a personal organization. */\nexport const PERSONAL_ORGANIZATION_NAME_MIN_LENGTH = 3\nexport const PERSONAL_ORGANIZATION_NAME_MAX_LENGTH = 100\n\nexport type ApprovalUseCaseType =\n (typeof APPROVAL_USE_CASE_TYPES)[keyof typeof APPROVAL_USE_CASE_TYPES]\n\n/**\n * The shortest extension that accounts-backend accepts.\n *\n * `POST /:orgId/extendtrial` refuses a date that is less than 14 days away\n * when the body carries `onBehalfOf`, and it measures those 14 days when the\n * CALL arrives. The floor here is 15 and not 14, for two reasons:\n *\n * - The two clocks are not the same instant. Accounts builds its own \"14 days\n * from now\" a few milliseconds after control-backend builds the date, so a\n * date of exactly 14 days is already in the past for the comparison.\n * - Accounts counts with `setDate`, which is calendar arithmetic. A change of\n * the daylight saving time moves its limit by an hour.\n */\nexport const EXTEND_TRIAL_MIN_DAYS = 15\n\n/**\n * The longest extension that accounts-backend accepts.\n *\n * The same route refuses a date more than 62 days away. 61 keeps the same\n * margin as the floor above.\n */\nexport const EXTEND_TRIAL_MAX_DAYS = 61\n\n/**\n * The most roles that one change-platform-roles request adds, or removes.\n *\n * The form of control-frontend offers every platform role, and a person who\n * gives a Camundi a new position rarely changes more than a few. A request with\n * more roles than this is a request that nobody reads before they approve it.\n */\nexport const PLATFORM_ROLE_CHANGE_MAX_ROLES = 10\n\n/**\n * The longest text value that one change-org-limits request writes.\n *\n * A text limit holds a short value, such as a list of regions. The bound keeps\n * a request readable for the person who approves it.\n */\nexport const ORG_LIMIT_TEXT_MAX_LENGTH = 2000\n\n/**\n * LLM_BUDGET_TOP_UP_THRESHOLD is the share of the budget that the spend of a\n * managed LLM key must reach before a top-up is the normal case.\n *\n * A request below it is still possible, but the person who asks must confirm\n * it, and the request says so to the approver. Accounts refuses a top-up\n * below it that does not carry that confirmation.\n */\nexport const LLM_BUDGET_TOP_UP_THRESHOLD = 0.9\n\n/**\n * isLlmSpendBelowTopUpThreshold reports whether a top-up of a managed LLM key\n * needs the explicit confirmation of `LLM_BUDGET_TOP_UP_THRESHOLD`.\n */\nexport const isLlmSpendBelowTopUpThreshold = (\n spend: number,\n maxBudget: number,\n): boolean => spend < maxBudget * LLM_BUDGET_TOP_UP_THRESHOLD\n\n/**\n * The most users that one purge-users request deletes.\n *\n * The God Mode purge deletes one user after the other, and Auth0 limits how\n * fast that goes. A list longer than this is also a list that no approver\n * reads before they agree.\n */\nexport const PURGE_USERS_MAX_USERS = 1000\n\n/**\n * What a person must hold to open or to approve a purge-users request.\n *\n * The purge route of accounts, `DELETE /api/users/:userId/purge`, needs both\n * of the caller. The approval route of accounts checks both of the person who\n * asked, when control-backend sends `purge: true`. The use case of\n * control-backend returns this list from `permissionsFor`, and the form passes\n * it to `canCreate`, so the button and the server never disagree.\n */\nexport const PURGE_USERS_REQUIRED_PERMISSIONS: readonly string[] = [\n AccountsPermissions.GOD_PURGE_USERS,\n AccountsPermissions.DELETE_USER,\n]\n\n/**\n * What a person must hold to open or to approve a remove-org-member request,\n * with or without a new owner. CS holds it through the Camundi permission\n * rules. Accounts checks the same list for the person who asked.\n */\nexport const REMOVE_ORG_MEMBER_REQUIRED_PERMISSIONS: readonly string[] = [\n AccountsPermissions.REMOVE_FROM_ORG_WITH_APPROVAL,\n]\n\n/**\n * The largest metadata object that one update-user-metadata request writes,\n * in characters of its JSON text.\n *\n * This is a bound of the product, and not the limit of Auth0, which is far\n * larger. The approvers read the whole object before they agree, and an\n * object that is longer than this is an object that nobody reads.\n */\nexport const USER_METADATA_MAX_LENGTH = 16_000\n\n/**\n * The largest metadata object that a request carries as the object that the\n * person who asked READ.\n *\n * It is larger than `USER_METADATA_MAX_LENGTH`, so a user whose metadata grew\n * past that bound can still get an edit that makes it smaller. It still has a\n * bound, because the request keeps the copy in its row.\n */\nexport const USER_METADATA_EXPECTED_MAX_LENGTH = 500_000\n\n/**\n * The bounds of an automated-enterprise-onboarding request.\n *\n * The accounts wizard holds the first four, and the schema of control-backend\n * and the form of control-frontend read them here, so the form never sends\n * what the service refuses.\n */\nexport const ENTERPRISE_ONBOARDING_NAME_MAX_LENGTH = 50\nexport const ENTERPRISE_ONBOARDING_SFDC_ID_MAX_LENGTH = 50\nexport const ENTERPRISE_ONBOARDING_TERM_MIN_MONTHS = 1\nexport const ENTERPRISE_ONBOARDING_TERM_MAX_MONTHS = 60\n/** The most of one value metric that a contract includes. */\nexport const ENTERPRISE_ONBOARDING_METRIC_MAX = 1_000_000_000_000\n/**\n * The most clusters of one plan type that an onboarding reserves: the cap of\n * the accounts wizard. Accounts checks the limit of the plan only when it\n * reserves, after it created the two organizations, so the request must not\n * carry a count that the plan refuses.\n */\nexport const ENTERPRISE_ONBOARDING_RESERVATION_MAX = 20\n\n/**\n * The most clusters of one plan type that a change-org-reservations request\n * reserves. The approval route of accounts-ng has the same bound.\n * `PATCH /api/salesplans/reserved` has no bound. A request with `force`\n * skips the maximum of the sales plan, thus this bound is its only bound.\n */\nexport const ORG_RESERVATION_MAX = 1000\n\n/**\n * Whether a string is a calendar day, `YYYY-MM-DD`, that exists.\n *\n * The shape alone is not enough: `Date` rolls `2026-02-30` to March 2 with\n * no error, and `2026-13-45` becomes an invalid date that a database refuses\n * only at the write. A request carries the day for days before it runs, so\n * the check is at the open, and in the form.\n */\nexport const isCalendarDay = (value: string): boolean =>\n /^\\d{4}-\\d{2}-\\d{2}$/.test(value) &&\n !Number.isNaN(Date.parse(value)) &&\n new Date(value).toISOString().startsWith(value)\n\n/**\n * What a person must hold to open or to approve a change-enterprise-contract\n * request.\n *\n * `PATCH /:orgId/enterprise` of accounts needs `ENTERPRISE_ORG_MODIFY`, and\n * also `ENTERPRISE_ORG_MODIFY_START_DATE` for a new start date. The approval\n * route of accounts checks the same list for the person who asked. The use\n * case of control-backend returns this list from `permissionsFor`, and the\n * form passes it to `canCreate`, so the button and the server never disagree.\n */\nexport const enterpriseContractChangePermissions = (\n changesStartDate: boolean,\n): string[] =>\n changesStartDate\n ? [\n AccountsPermissions.ENTERPRISE_ORG_MODIFY,\n AccountsPermissions.ENTERPRISE_ORG_MODIFY_START_DATE,\n ]\n : [AccountsPermissions.ENTERPRISE_ORG_MODIFY]\n\n/** The longest email address that a change-user-email request carries. */\nexport const APPROVAL_EMAIL_MAX_LENGTH = 320\n\n/**\n * The email addresses that a change-user-email request accepts.\n *\n * It is the email pattern of zod 4.6. The pattern is here, so the schema of\n * control-backend and the form of control-frontend accept the same addresses,\n * and a form never sends an address that the service refuses.\n */\nexport const APPROVAL_EMAIL_PATTERN =\n // biome-ignore lint/complexity/noUselessEscapeInRegex: the same source as zod, character for character\n /^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$/\n\n/**\n * The most generations that one change-generation-versions request changes.\n *\n * Each generation restarts every cluster on it. A request over more\n * generations than this is a request that no approver reads to the end.\n *\n * The two bounds of this use case also keep a request under the body limit\n * of control-backend (1 MiB, `server-options.ts` of the shared Fastify\n * layer): 20 generations, each with the expected value of the 2 image\n * versions of 2000 characters, is 80 000 characters before the rest of the\n * payload.\n */\nexport const GENERATION_VERSIONS_MAX_GENERATIONS = 20\n\n/**\n * The longest value of one mutable version of a generation.\n *\n * An image reference is short, and only the two image versions go through\n * the use case (`GENERATION_IMAGE_VERSION_KEYS`). The bound keeps a request\n * readable for the approver. See `GENERATION_VERSIONS_MAX_GENERATIONS` for\n * the sum.\n */\nexport const GENERATION_VERSION_VALUE_MAX_LENGTH = 2000\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The active user count of the Auth0 tenant (`GET /api/logs/active-users` of
|
|
3
|
+
* accounts-backend). Auth0 counts the users that logged in during the last
|
|
4
|
+
* `windowDays` days. Auth0 sets the window, not the caller.
|
|
5
|
+
*/
|
|
6
|
+
export interface ActiveUsersDto {
|
|
7
|
+
activeUsers: number;
|
|
8
|
+
windowDays: number;
|
|
9
|
+
/** The time of the read, as an ISO instant. */
|
|
10
|
+
fetchedAt: string;
|
|
11
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
//# sourceMappingURL=ActiveUsers.dto.js.map
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* One row of `GET /api/fleet-stats` of control-backend: the count of one
|
|
3
|
+
* entity on one day, for one value of one dimension. The description of that
|
|
4
|
+
* route in the OpenAPI document of control-backend holds the rules of a row.
|
|
5
|
+
*/
|
|
6
|
+
export interface FleetStatRowDto {
|
|
7
|
+
/** `YYYY-MM-DD`, UTC. */
|
|
8
|
+
snapshotDate: string;
|
|
9
|
+
source: string;
|
|
10
|
+
entity: string;
|
|
11
|
+
dimension: string;
|
|
12
|
+
dimensionValue: string;
|
|
13
|
+
count: number;
|
|
14
|
+
/** Only the `hostingCost` rows have it: the cost in USD. */
|
|
15
|
+
sumValue?: number;
|
|
16
|
+
}
|
|
17
|
+
/** One page of `GET /api/fleet-stats` of control-backend. */
|
|
18
|
+
export interface FleetStatsPageDto {
|
|
19
|
+
rows: FleetStatRowDto[];
|
|
20
|
+
/** True when the range holds more rows than this page. */
|
|
21
|
+
hasMore: boolean;
|
|
22
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
//# sourceMappingURL=FleetStats.dto.js.map
|
package/dist/dtos/Hdp.dto.d.ts
CHANGED
|
@@ -102,20 +102,28 @@ export declare namespace Hdp {
|
|
|
102
102
|
}
|
|
103
103
|
/**
|
|
104
104
|
* The hosting cost of every cluster that HDP holds inside the
|
|
105
|
-
* window, for the whole fleet.
|
|
106
|
-
* `
|
|
107
|
-
* same `total_gross_cost` column, same
|
|
108
|
-
* anchor day.
|
|
105
|
+
* window, for the whole fleet. For the default query (no `days`, no
|
|
106
|
+
* `day`), each row is the same number as `ClusterHostingCost.hostingCostUsd`
|
|
107
|
+
* gives for that cluster: same table, same `total_gross_cost` column, same
|
|
108
|
+
* 30-day window that ends at the table-wide anchor day.
|
|
109
109
|
*
|
|
110
110
|
* HDP keeps the rows of clusters that no longer exist, thus the reader
|
|
111
111
|
* matches these rows against its own cluster list. A cluster with no row
|
|
112
112
|
* has no cost data in the window. That is not a cost of 0.
|
|
113
|
+
*
|
|
114
|
+
* The query `days=1` gives one measure day, and `day=YYYY-MM-DD` sets the
|
|
115
|
+
* last day of the window in place of the anchor day. These rows are not
|
|
116
|
+
* the 30-day cost of `ClusterHostingCost`.
|
|
113
117
|
*/
|
|
114
118
|
interface FleetHostingCost {
|
|
115
119
|
rows: FleetHostingCostRow[];
|
|
116
120
|
/** The window that `rows` covers, in days, ending at `anchorDay`. */
|
|
117
121
|
windowDays: number;
|
|
118
|
-
/**
|
|
122
|
+
/**
|
|
123
|
+
* The last day of the window, as `YYYY-MM-DD`. With `days=1` it is the
|
|
124
|
+
* measure day of the rows. Absent when the query has no `day` and the
|
|
125
|
+
* table has no recent row.
|
|
126
|
+
*/
|
|
119
127
|
anchorDay?: string;
|
|
120
128
|
/** The time of the read, as an ISO instant. */
|
|
121
129
|
fetchedAt: string;
|
|
@@ -10,6 +10,7 @@ var ErrorType = /* @__PURE__ */ ((ErrorType2) => {
|
|
|
10
10
|
ErrorType2[ErrorType2["TooManyRequests"] = 429] = "TooManyRequests";
|
|
11
11
|
ErrorType2[ErrorType2["Internal"] = 500] = "Internal";
|
|
12
12
|
ErrorType2[ErrorType2["NotImplemented"] = 501] = "NotImplemented";
|
|
13
|
+
ErrorType2[ErrorType2["BadGateway"] = 502] = "BadGateway";
|
|
13
14
|
ErrorType2[ErrorType2["ServiceUnavailable"] = 503] = "ServiceUnavailable";
|
|
14
15
|
return ErrorType2;
|
|
15
16
|
})(ErrorType || {});
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/enums/ErrorType.enum.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// eslint-disable-next-line no-shadow\nexport enum ErrorType {\n BadRequest = 400,\n Unauthorized = 401,\n Forbidden = 403,\n NotFound = 404,\n Conflict = 409,\n PreconditionFailed = 412,\n IAmATeapot = 418,\n UnprocessableEntity = 422,\n TooManyRequests = 429,\n Internal = 500,\n NotImplemented = 501,\n ServiceUnavailable = 503,\n}\n"],
|
|
5
|
-
"mappings": "AAOO,IAAK,YAAL,kBAAKA,eAAL;AACL,EAAAA,sBAAA,gBAAa,OAAb;AACA,EAAAA,sBAAA,kBAAe,OAAf;AACA,EAAAA,sBAAA,eAAY,OAAZ;AACA,EAAAA,sBAAA,cAAW,OAAX;AACA,EAAAA,sBAAA,cAAW,OAAX;AACA,EAAAA,sBAAA,wBAAqB,OAArB;AACA,EAAAA,sBAAA,gBAAa,OAAb;AACA,EAAAA,sBAAA,yBAAsB,OAAtB;AACA,EAAAA,sBAAA,qBAAkB,OAAlB;AACA,EAAAA,sBAAA,cAAW,OAAX;AACA,EAAAA,sBAAA,oBAAiB,OAAjB;AACA,EAAAA,sBAAA,wBAAqB,OAArB;
|
|
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// eslint-disable-next-line no-shadow\nexport enum ErrorType {\n BadRequest = 400,\n Unauthorized = 401,\n Forbidden = 403,\n NotFound = 404,\n Conflict = 409,\n PreconditionFailed = 412,\n IAmATeapot = 418,\n UnprocessableEntity = 422,\n TooManyRequests = 429,\n Internal = 500,\n NotImplemented = 501,\n BadGateway = 502,\n ServiceUnavailable = 503,\n}\n"],
|
|
5
|
+
"mappings": "AAOO,IAAK,YAAL,kBAAKA,eAAL;AACL,EAAAA,sBAAA,gBAAa,OAAb;AACA,EAAAA,sBAAA,kBAAe,OAAf;AACA,EAAAA,sBAAA,eAAY,OAAZ;AACA,EAAAA,sBAAA,cAAW,OAAX;AACA,EAAAA,sBAAA,cAAW,OAAX;AACA,EAAAA,sBAAA,wBAAqB,OAArB;AACA,EAAAA,sBAAA,gBAAa,OAAb;AACA,EAAAA,sBAAA,yBAAsB,OAAtB;AACA,EAAAA,sBAAA,qBAAkB,OAAlB;AACA,EAAAA,sBAAA,cAAW,OAAX;AACA,EAAAA,sBAAA,oBAAiB,OAAjB;AACA,EAAAA,sBAAA,gBAAa,OAAb;AACA,EAAAA,sBAAA,wBAAqB,OAArB;AAbU,SAAAA;AAAA,GAAA;",
|
|
6
6
|
"names": ["ErrorType"]
|
|
7
7
|
}
|
package/dist/index.d.ts
CHANGED
|
@@ -36,9 +36,10 @@ export type { ApprovalActorView, ApprovalDecision, ApprovalDenialCode, } from '.
|
|
|
36
36
|
export { approvalPermissionCheck, canAcknowledge, canCreate, canExecute, canOverride, canReject, canRunOverridden, canView, canWithdraw, createPermissionsOf, EXECUTE_WINDOW_DAYS, effectiveStatus, hasActorEmail, hasEveryPermission, hasFailedRun, isExpired, isOverrideGrantActive, isRunWindowClosed, isSameActor, isSameActorEmail, needsReason, OVERRIDE_GRANT_ENDED_MESSAGE, opensWithOwnApproval, overrideGranteeOf, remainingAcks, requiredPermissionsOf, resolveRequiredAcks, runWindowEnd, } from './approvals/policy.js';
|
|
37
37
|
export type { ReleaseTrainAutoUpgradeCandidates, ReleaseTrainPublishPayload, ReleaseTrainRollbackPayload, } from './approvals/release-train.js';
|
|
38
38
|
export type { ApprovalUseCaseType } from './approvals/use-cases.const.js';
|
|
39
|
-
export { APPROVAL_EMAIL_MAX_LENGTH, APPROVAL_EMAIL_PATTERN, APPROVAL_OVERRIDE_DEFAULT_HOURS, APPROVAL_OVERRIDE_DENYLIST, APPROVAL_OVERRIDE_MAX_HOURS, APPROVAL_USE_CASE_TYPES, ENTERPRISE_ONBOARDING_METRIC_MAX, ENTERPRISE_ONBOARDING_NAME_MAX_LENGTH, ENTERPRISE_ONBOARDING_RESERVATION_MAX, ENTERPRISE_ONBOARDING_SFDC_ID_MAX_LENGTH, ENTERPRISE_ONBOARDING_TERM_MAX_MONTHS, ENTERPRISE_ONBOARDING_TERM_MIN_MONTHS, EXTEND_TRIAL_MAX_DAYS, EXTEND_TRIAL_MIN_DAYS, enterpriseContractChangePermissions, GENERATION_VERSION_VALUE_MAX_LENGTH, GENERATION_VERSIONS_MAX_GENERATIONS, isApprovalOverridable, isCalendarDay, isLlmSpendBelowTopUpThreshold, LLM_BUDGET_TOP_UP_THRESHOLD, ORG_LIMIT_TEXT_MAX_LENGTH, PERSONAL_ORGANIZATION_MAX_PER_REQUESTER, PERSONAL_ORGANIZATION_NAME_MAX_LENGTH, PERSONAL_ORGANIZATION_NAME_MIN_LENGTH, PLATFORM_ROLE_CHANGE_MAX_ROLES, PURGE_USERS_MAX_USERS, PURGE_USERS_REQUIRED_PERMISSIONS, REMOVE_ORG_MEMBER_REQUIRED_PERMISSIONS, USER_METADATA_EXPECTED_MAX_LENGTH, USER_METADATA_MAX_LENGTH, } from './approvals/use-cases.const.js';
|
|
39
|
+
export { APPROVAL_EMAIL_MAX_LENGTH, APPROVAL_EMAIL_PATTERN, APPROVAL_OVERRIDE_DEFAULT_HOURS, APPROVAL_OVERRIDE_DENYLIST, APPROVAL_OVERRIDE_MAX_HOURS, APPROVAL_USE_CASE_TYPES, ENTERPRISE_ONBOARDING_METRIC_MAX, ENTERPRISE_ONBOARDING_NAME_MAX_LENGTH, ENTERPRISE_ONBOARDING_RESERVATION_MAX, ENTERPRISE_ONBOARDING_SFDC_ID_MAX_LENGTH, ENTERPRISE_ONBOARDING_TERM_MAX_MONTHS, ENTERPRISE_ONBOARDING_TERM_MIN_MONTHS, EXTEND_TRIAL_MAX_DAYS, EXTEND_TRIAL_MIN_DAYS, enterpriseContractChangePermissions, GENERATION_VERSION_VALUE_MAX_LENGTH, GENERATION_VERSIONS_MAX_GENERATIONS, isApprovalOverridable, isCalendarDay, isLlmSpendBelowTopUpThreshold, LLM_BUDGET_TOP_UP_THRESHOLD, ORG_LIMIT_TEXT_MAX_LENGTH, ORG_RESERVATION_MAX, PERSONAL_ORGANIZATION_MAX_PER_REQUESTER, PERSONAL_ORGANIZATION_NAME_MAX_LENGTH, PERSONAL_ORGANIZATION_NAME_MIN_LENGTH, PLATFORM_ROLE_CHANGE_MAX_ROLES, PURGE_USERS_MAX_USERS, PURGE_USERS_REQUIRED_PERMISSIONS, REMOVE_ORG_MEMBER_REQUIRED_PERMISSIONS, USER_METADATA_EXPECTED_MAX_LENGTH, USER_METADATA_MAX_LENGTH, } from './approvals/use-cases.const.js';
|
|
40
40
|
export { CHART_DAY_GRAIN_MAX_DAYS, CHART_FILTER_MAX_LENGTH, CHART_GRAIN_DEFAULT, CHART_GRAINS, CHART_ID_MAX_LENGTH, CHART_METRICS, CHART_OTHER_SERIES_KEY, CHART_QUERY_MAX_LENGTH, CHART_TOP_DEFAULT, CHART_TOP_MAX, CHART_UNKNOWN_SERIES_KEY, CHART_WINDOW_AMOUNT_MAX, CHART_WINDOW_DEFAULT, CHART_WINDOW_UNITS, type ChartDimensionSpec, type ChartGrain, type ChartMetricSpec, type ChartPoint, type ChartQueryCheck, ChartQueryError, type ChartQueryErrorKind, type ChartQueryOptions, type ChartResult, type ChartSeries, type ChartSpec, type ChartUnit, type ChartWindow, type ChartWindowUnit, chartBucketStart, chartToday, chartWindowRange, findChartDimension, findChartMetric, formatChartSpec, isChartQueryError, parseChartQuery, readChartSpec, validateChartSpec, } from './charts/index.js';
|
|
41
41
|
export { DASHBOARD_TILE_DEFAULT_SIZE, dashboardDefinitionBytes, dashboardDefinitionFits, dashboardTileDefaultSize, emptyDashboardDefinition, isSafeDashboardLink, placeNewTile, placeNewTiles, tilesOverlap, toStoredDashboardDefinition, upgradeDashboardDefinition, } from './dashboards/definition.js';
|
|
42
|
+
export type { ActiveUsersDto } from './dtos/ActiveUsers.dto.js';
|
|
42
43
|
export type { ALERT_SUBSCRIPTION_REPORT_TYPES, ALERT_SUBSCRIPTION_TYPES, AlertSubscriptionDto, AlertSubscriptionEntryDto, AlertSubscriptionWebhookAuth, CheckFailedReason, } from './dtos/AlertSubscription.dto.js';
|
|
43
44
|
export { FORBIDDEN_HOSTNAMES_FOR_WEBHOOK_ALERTS, HMAC_HEADER_POSITION, HMAC_SUPPORTED_ALGORITHM, } from './dtos/AlertSubscription.dto.js';
|
|
44
45
|
export type { AnnotationActor, AnnotationDto, AnnotationEntityKind, AnnotationKind, AnnotationLookupDto, AnnotationLookupEntryDto, AnnotationTagDto, EntityAnnotationsDto, } from './dtos/Annotation.dto.js';
|
|
@@ -71,6 +72,7 @@ export { DASHBOARD_CHART_RENDERS, DASHBOARD_CLUSTER_CARDS, DASHBOARD_DEFINITION_
|
|
|
71
72
|
export type { EarlyAccessFeatureDto } from './dtos/EarlyAccessFeature.dto.js';
|
|
72
73
|
export type { CamundaWebApp, CamundaWebAppWithZeebe, ExternalClickwrapConfigDto, ExternalClusterDto, ExternalOrganizationDto, } from './dtos/ExternalWebapp.dto.js';
|
|
73
74
|
export type { CreateFeatureFlagDto, FeatureFlagAnswer, FeatureFlagDto, FeatureFlagListDto, UpdateFeatureFlagDto, } from './dtos/FeatureFlags.dto.js';
|
|
75
|
+
export type { FleetStatRowDto, FleetStatsPageDto, } from './dtos/FleetStats.dto.js';
|
|
74
76
|
export type { ClusterGenerationStateDto, ForceGenerationUpgradeResult, } from './dtos/ForceGenerationUpgrade.dto.js';
|
|
75
77
|
export { activeGenerations, compareGenerationNamesNewestFirst, type GenerationDto, type GenerationWithClusterCountDto, sortGenerationBySemverOfZeebe, type UpgradableGenerationsDto, } from './dtos/Generations.dto.js';
|
|
76
78
|
export type { ChangeGenerationVersionsResult } from './dtos/GenerationVersionsChange.dto.js';
|
package/dist/index.js
CHANGED
|
@@ -259,6 +259,7 @@ import {
|
|
|
259
259
|
isLlmSpendBelowTopUpThreshold,
|
|
260
260
|
LLM_BUDGET_TOP_UP_THRESHOLD,
|
|
261
261
|
ORG_LIMIT_TEXT_MAX_LENGTH,
|
|
262
|
+
ORG_RESERVATION_MAX,
|
|
262
263
|
PERSONAL_ORGANIZATION_MAX_PER_REQUESTER,
|
|
263
264
|
PERSONAL_ORGANIZATION_NAME_MAX_LENGTH,
|
|
264
265
|
PERSONAL_ORGANIZATION_NAME_MIN_LENGTH,
|
|
@@ -938,6 +939,7 @@ export {
|
|
|
938
939
|
ORGANIZATION_SEARCH_FIELDS,
|
|
939
940
|
ORG_DEFAULT_SEARCH_FIELDS,
|
|
940
941
|
ORG_LIMIT_TEXT_MAX_LENGTH,
|
|
942
|
+
ORG_RESERVATION_MAX,
|
|
941
943
|
OVERRIDE_GRANT_ENDED_MESSAGE,
|
|
942
944
|
ObjectMergeUtils,
|
|
943
945
|
OrganizationPermissionsDescriptions,
|
package/dist/index.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/index.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// Constants (runtime values)\n// ============================================================================\n\nexport {\n ACTIVITY_RETENTION_CHOICES,\n ACTIVITY_RETENTION_DEFAULT_MONTHS,\n ACTIVITY_RETENTION_FLAG,\n ACTIVITY_RETENTION_KEEP_FOREVER,\n ACTIVITY_RETENTION_SYNC_CHUNK,\n type ActivityRetentionMonths,\n activityRetentionCutoff,\n activityRetentionLabel,\n isActivityRetentionMonths,\n isLimitedActivityRetention,\n} from './constants/activity-retention.const.js'\nexport {\n CUSTOM_GENERATION_MAX_PER_REQUESTER,\n CUSTOM_GENERATION_MAX_UPGRADEABLE_FROM,\n CUSTOM_GENERATION_NAME_MAX_LENGTH,\n CUSTOM_GENERATION_NAME_MIN_LENGTH,\n checkNewGenerationVersions,\n isCustomGenerationStage,\n} from './constants/custom-generation.const.js'\nexport {\n CUSTOM_HARDWARE_SIZING_BROKER_TOTAL_CAPS,\n CUSTOM_HARDWARE_SIZING_COUNT_CAPS,\n CUSTOM_HARDWARE_SIZING_ELASTICSEARCH_TOTAL_CAPS,\n CUSTOM_HARDWARE_SIZING_MAX_AUTO_RESIZE_INCREASE_GI,\n CUSTOM_HARDWARE_SIZING_MAX_PLAN_JSON_LENGTH,\n CUSTOM_HARDWARE_SIZING_MAX_PLANS_PER_REQUESTER,\n CUSTOM_HARDWARE_SIZING_NAME_MAX_LENGTH,\n CUSTOM_HARDWARE_SIZING_NAME_MIN_LENGTH,\n CUSTOM_HARDWARE_SIZING_REPLICA_SET_TOTAL_CAPS,\n CUSTOM_HARDWARE_SIZING_RESOURCE_CAPS,\n checkCustomHardwareSizing,\n isCustomHardwareSizingStage,\n parseKubernetesQuantity,\n} from './constants/custom-hardware-sizing.const.js'\nexport {\n APPROVAL_ENTRY_HEADER,\n CAMUNDI_APPROVAL_FLOW_FLAG,\n DIRECT_ROUTE_LOCK_HEADERS,\n DIRECT_ROUTE_LOCKED,\n directRouteLockHeaders,\n ERROR_CODE_HEADER,\n} from './constants/direct-route-lock.const.js'\nexport { DAY, HOUR, MINUTE, SECOND, WEEK } from './constants/duration.const.js'\nexport type { Stage } from './constants/misc.const.js'\nexport {\n CAMUNDA_CLAIMS_NAMESPACE,\n CONSOLE_API_USER_ID,\n countBulkOperationAcks,\n FIRSTNAME_LASTNAME_MAX_LENGTH,\n HOTBACKUP_MIN_CREATE_PERIOD,\n MAX_HARDWARE_PACKAGE_COUNT,\n MAX_LENGTH_CLUSTER_NAME,\n MIGRATION_BACKUP_ID_LABEL_PREFIX,\n MINIMUM_EYEPAIRS,\n MINIMUM_EYEPAIRS_BY_BULK_OPERATION_TYPE,\n minimumBulkOperationAcks,\n minimumBulkOperationEyes,\n missingBulkOperationAcks,\n NAMES_OF_ENTERPRISE_SALESPLANS_WITH_SLEEPING_CLUSTERS,\n requiredBulkOperationAcks,\n SECRETS_MAX_LENGTH,\n STARTING_PRICE_PER_MONTH_IN_EURO,\n TEMPORARY_CLUSTER_NAME,\n UNKNOWN_ACTOR_EMAIL,\n} from './constants/misc.const.js'\nexport {\n getGatewayPropertyHint,\n getGatewayPropertyPath,\n isAffectedByStreamlinedDeployment,\n isPre89AffectedPath,\n PRE89_AFFECTED_PATHS,\n PRE89_AFFECTED_PROPERTY_PREFIXES,\n PRE89_GATEWAY_PROPERTY_PATHS,\n PRE89_GATEWAY_RESOURCE_PREFIXES,\n} from './constants/pre89EnvVarMapping.const.js'\nexport { PRIVATE_LINK_REGIONS } from './constants/privateLinkRegions.const.js'\nexport { SECURE_CONNECTIVITY_ALLOWED_ENTRIES_LIMIT } from './constants/secureConnectivity.const.js'\nexport { isSelfServiceClusterModificationStage } from './constants/self-service-cluster-modification.const.js'\nexport type {\n TrialExtensionSurveyAnswer,\n TrialExtensionSurveyQuestion,\n} from './constants/trialExtensionSurvey.const.js'\nexport { TRIAL_EXTENSION_SURVEY_QUESTIONS } from './constants/trialExtensionSurvey.const.js'\nexport {\n V2_BODY_IDS_MAX,\n V2_FILTER_IDS_MAX,\n V2_MAX_PAGE_LIMIT,\n} from './constants/v2-list.const.js'\nexport {\n ADMIN_APP_RENAME_MIN_VERSION,\n APP_INTEGRATIONS_89_STREAM_CONNECTOR_BRIDGE_MIN_VERSION,\n APP_INTEGRATIONS_89_STREAM_MINOR,\n APP_INTEGRATIONS_89_STREAM_ZEEBE_MIN_VERSION,\n APP_INTEGRATIONS_MIN_VERSION,\n AUDIT_LOG_TAB_MIN_VERSION,\n AUTHORIZATION_TOGGLE_MIN_VERSION,\n AWS_ONLY_GENERATION_MIN_VERSION,\n BUSINESS_ID_UNIQUENESS_MIN_VERSION,\n BYOIDP_MIN_VERSION,\n CLUSTER_SECRETS_LABEL_MIN_VERSION,\n CLUSTER_STATISTICS_CONFIG_MIN_VERSION,\n CONNECTOR_MANAGEMENT_METRICS_MIN_VERSION,\n CONNECTOR_SECRET_SYNC_MIN_VERSION,\n CONNECTORS_MANAGEMENT_LINK_MIN_VERSION,\n ENFORCE_GROUPS_TASKLIST_V2_HIDDEN_MIN_VERSION,\n ENFORCE_GROUPS_TOGGLE_MIN_VERSION,\n GATEWAY_SPEC_8_9_MIN_VERSION,\n HOT_BACKUP_MIN_VERSION,\n IDENTITY_AUTHORIZATION_MIN_VERSION,\n IDENTITY_AUTHORIZATION_NOTICE_MAX_VERSION,\n IDENTITY_MANAGEMENT_MIN_VERSION,\n INTERNAL_CONNECTORS_MANAGEMENT_MIN_VERSION,\n JOB_DASHBOARD_MIN_VERSION,\n LINE_8_9_MIN_VERSION,\n LINE_8_10_MIN_VERSION,\n MCP_MIN_VERSION,\n MULTI_TENANCY_TOGGLE_MIN_VERSION,\n NEW_CLUSTER_ROLES_MIN_VERSION,\n OPTIMIZE_DEFAULT_ON_MIN_VERSION,\n OPTIMIZE_FILTERING_MIN_VERSION,\n OPTIONAL_TELEMETRY_MIN_VERSION,\n RESOURCE_BASED_AUTHORIZATIONS_MIN_VERSION,\n REST_API_URL_TRANSFORM_MIN_VERSION,\n REST_API_V2_MIN_VERSION,\n RESUME_ALPHA_MIN_VERSION,\n SECRET_SOURCE_MIN_VERSION,\n SECRETS_FILTER_MODE_8_6_MIN_VERSION,\n SECRETS_FILTER_MODE_8_7_MIN_VERSION,\n SECRETS_FILTER_MODE_8_8_MIN_VERSION,\n SECRETS_FILTER_MODE_8_9_MIN_VERSION,\n SECRETS_FILTER_MODE_8_10_MIN_VERSION,\n SESSION_CONFIG_MIN_VERSION,\n SWAGGER_MIN_VERSION,\n SWAGGER_URL_8_9_MIN_VERSION,\n TASKLIST_MODE_TOGGLE_MIN_VERSION,\n TASKLIST_UPGRADE_BANNER_MIN_VERSION,\n TASKLIST_V2_AUTO_ENABLE_FROM_MINOR,\n TASKLIST_V2_AUTO_ENABLE_TO_MINOR,\n TASKLIST_V2_DEFAULT_ON_MIN_VERSION,\n TASKLIST_V2_SETTING_MAX_VERSION,\n TASKLIST_V2_UPGRADE_MIN_VERSION,\n TASKLIST_V2_UPGRADE_TARGET_MIN_VERSION,\n UPGRADE_READINESS_MIN_VERSION,\n ZEEBE_REST_URL_MIN_VERSION,\n} from './constants/version-gates.const.js'\n\n// ============================================================================\n// DTOs - Types (interfaces and type aliases)\n// ============================================================================\n\n// Agent tokens - the read-only machine credentials of ccmacli. control-backend\n// stores them, and token-issuer, console-backend and accounts-backend read the\n// same claim and permission sets.\nexport type {\n AgentAccess,\n AgentClaim,\n AgentGrantCreated,\n AgentGrantRefusal,\n AgentGrantRefusalReason,\n AgentStatusResponse,\n AgentToken,\n AgentTokenAdmin,\n AgentTokenCreated,\n AgentTokenExpiryDays,\n AgentTokenKind,\n AgentTokenStatus,\n AgentVerifyResponse,\n CreateAgentGrantDto,\n CreateAgentTokenDto,\n ExtendAgentTokenDto,\n RedeemAgentGrantDto,\n} from './agent-tokens/agent-tokens.js'\nexport {\n AGENT_CLAIM,\n AGENT_CLIENT_ID_PREFIX,\n AGENT_ERROR,\n AGENT_GRANT_TTL_MS,\n AGENT_GRANTS_PER_HOUR_MAX,\n AGENT_READ_PERMISSIONS,\n AGENT_SLACK_CHANNEL_PATTERN,\n AGENT_SLACK_GRANTS_FEATURE_FLAG,\n AGENT_TOKEN_EXPIRY_DAYS,\n AGENT_TOKEN_NAME_MAX,\n AGENT_TOKEN_STATUSES,\n AGENT_TOKENS_ACTIVE_MAX,\n AGENT_TOKENS_FEATURE_FLAG,\n agentReadPermissionUnion,\n parseAgentClaim,\n} from './agent-tokens/agent-tokens.js'\n// Annotations - the notes and the tags that a Camundi attaches to a fleet\n// entity. The wire types and the rules are pure and browser-safe, so\n// control-backend and control-frontend run the same code.\nexport type {\n AnnotationActorView,\n AnnotationDecision,\n AnnotationDenialCode,\n} from './annotations/policy.js'\nexport {\n ANNOTATION_DENIAL_MESSAGES,\n canEditNote,\n canRemove,\n checkNoteBody,\n checkTagName,\n isAuthor,\n} from './annotations/policy.js'\nexport type {\n ApprovalRule,\n StageDependentApprovalType,\n} from './approvals/approval-rules.js'\nexport {\n APPROVAL_RULES,\n approvalsRequiredFor,\n} from './approvals/approval-rules.js'\nexport type {\n ChangePlanTypeRetentionLimitsResult,\n ClusterPlanTypeLimitsDto,\n PlanTypeRetentionLimitKey,\n} from './approvals/change-plan-type-retention-limits.js'\nexport {\n isRetentionLimitInBounds,\n PLAN_TYPE_RETENTION_LIMIT_KEY_LIST,\n PLAN_TYPE_RETENTION_LIMIT_KEYS,\n retentionLimitsOf,\n sameRetentionLimits,\n} from './approvals/change-plan-type-retention-limits.js'\nexport type {\n ClusterBulkClusterResultDto,\n ClusterBulkFinalStatus,\n ClusterBulkGenerationUpdateSettings,\n ClusterBulkOperationPayloadDto,\n ClusterBulkOperationRule,\n ClusterBulkPlanTypeUpdateSettings,\n ClusterBulkPlanUpdateSettings,\n ClusterBulkSettingsByType,\n ClusterBulkSleepWakeupSettings,\n ClusterBulkStepRequestDto,\n ClusterBulkStepResultDto,\n ClusterBulkTargetDto,\n} from './approvals/cluster-bulk-operation.js'\nexport {\n CLUSTER_BULK_OPERATION_CLUSTER_NAME_MAX_LENGTH,\n CLUSTER_BULK_OPERATION_MAX_CLUSTERS,\n CLUSTER_BULK_OPERATION_NAME_MAX_LENGTH,\n CLUSTER_BULK_OPERATION_RULES,\n CLUSTER_BULK_OPERATION_TYPES,\n CLUSTER_BULK_SLEEPING_CLUSTER_DELAY_MS,\n clusterBulkOperationTypeOf,\n clusterBulkParameterOf,\n clusterBulkRequiredPermissions,\n clusterBulkResultOf,\n isClusterBulkYolo,\n} from './approvals/cluster-bulk-operation.js'\nexport type {\n ClusterCorpseDto,\n ClusterCorpseKind,\n ClusterCorpsesDto,\n DeleteClusterCorpseResult,\n} from './approvals/delete-cluster-corpses.js'\nexport {\n CLUSTER_CORPSE_KINDS,\n CLUSTER_CORPSE_MIN_AGE_MS,\n DELETE_CLUSTER_CORPSES_MAX,\n} from './approvals/delete-cluster-corpses.js'\nexport {\n DNS_SUBDOMAIN_MAX_LENGTH,\n isDnsSubdomain,\n} from './approvals/dns-subdomain.js'\nexport type { EditGenerationResult } from './approvals/edit-generation.js'\nexport {\n EDIT_GENERATION_ENV_VARS_MAX_LENGTH,\n EDIT_GENERATION_EXPECTED_MAX_LENGTH,\n EDIT_GENERATION_NAME_MAX_LENGTH,\n} from './approvals/edit-generation.js'\nexport type { ApprovalExpectedChange } from './approvals/expected-value.js'\nexport {\n isSameApprovalValue,\n staleApprovalKeys,\n} from './approvals/expected-value.js'\nexport type {\n ClusterPlanTypeClusterDto,\n ClusterPlanTypeClustersDto,\n ForceDeleteClusterPlanTypeStepResult,\n} from './approvals/force-delete-cluster-plan-type.js'\nexport { FORCE_DELETE_CLUSTER_PLAN_TYPE_MAX_CLUSTERS } from './approvals/force-delete-cluster-plan-type.js'\nexport type {\n ApprovalActorView,\n ApprovalDecision,\n ApprovalDenialCode,\n} from './approvals/policy.js'\nexport {\n approvalPermissionCheck,\n canAcknowledge,\n canCreate,\n canExecute,\n canOverride,\n canReject,\n canRunOverridden,\n canView,\n canWithdraw,\n createPermissionsOf,\n EXECUTE_WINDOW_DAYS,\n effectiveStatus,\n hasActorEmail,\n hasEveryPermission,\n hasFailedRun,\n isExpired,\n isOverrideGrantActive,\n isRunWindowClosed,\n isSameActor,\n isSameActorEmail,\n needsReason,\n OVERRIDE_GRANT_ENDED_MESSAGE,\n opensWithOwnApproval,\n overrideGranteeOf,\n remainingAcks,\n requiredPermissionsOf,\n resolveRequiredAcks,\n runWindowEnd,\n} from './approvals/policy.js'\nexport type {\n ReleaseTrainAutoUpgradeCandidates,\n ReleaseTrainPublishPayload,\n ReleaseTrainRollbackPayload,\n} from './approvals/release-train.js'\nexport type { ApprovalUseCaseType } from './approvals/use-cases.const.js'\nexport {\n APPROVAL_EMAIL_MAX_LENGTH,\n APPROVAL_EMAIL_PATTERN,\n APPROVAL_OVERRIDE_DEFAULT_HOURS,\n APPROVAL_OVERRIDE_DENYLIST,\n APPROVAL_OVERRIDE_MAX_HOURS,\n APPROVAL_USE_CASE_TYPES,\n ENTERPRISE_ONBOARDING_METRIC_MAX,\n ENTERPRISE_ONBOARDING_NAME_MAX_LENGTH,\n ENTERPRISE_ONBOARDING_RESERVATION_MAX,\n ENTERPRISE_ONBOARDING_SFDC_ID_MAX_LENGTH,\n ENTERPRISE_ONBOARDING_TERM_MAX_MONTHS,\n ENTERPRISE_ONBOARDING_TERM_MIN_MONTHS,\n EXTEND_TRIAL_MAX_DAYS,\n EXTEND_TRIAL_MIN_DAYS,\n enterpriseContractChangePermissions,\n GENERATION_VERSION_VALUE_MAX_LENGTH,\n GENERATION_VERSIONS_MAX_GENERATIONS,\n isApprovalOverridable,\n isCalendarDay,\n isLlmSpendBelowTopUpThreshold,\n LLM_BUDGET_TOP_UP_THRESHOLD,\n ORG_LIMIT_TEXT_MAX_LENGTH,\n PERSONAL_ORGANIZATION_MAX_PER_REQUESTER,\n PERSONAL_ORGANIZATION_NAME_MAX_LENGTH,\n PERSONAL_ORGANIZATION_NAME_MIN_LENGTH,\n PLATFORM_ROLE_CHANGE_MAX_ROLES,\n PURGE_USERS_MAX_USERS,\n PURGE_USERS_REQUIRED_PERMISSIONS,\n REMOVE_ORG_MEMBER_REQUIRED_PERMISSIONS,\n USER_METADATA_EXPECTED_MAX_LENGTH,\n USER_METADATA_MAX_LENGTH,\n} from './approvals/use-cases.const.js'\n// The chart query of a dashboard tile (catalogue, language, result).\nexport {\n CHART_DAY_GRAIN_MAX_DAYS,\n CHART_FILTER_MAX_LENGTH,\n CHART_GRAIN_DEFAULT,\n CHART_GRAINS,\n CHART_ID_MAX_LENGTH,\n CHART_METRICS,\n CHART_OTHER_SERIES_KEY,\n CHART_QUERY_MAX_LENGTH,\n CHART_TOP_DEFAULT,\n CHART_TOP_MAX,\n CHART_UNKNOWN_SERIES_KEY,\n CHART_WINDOW_AMOUNT_MAX,\n CHART_WINDOW_DEFAULT,\n CHART_WINDOW_UNITS,\n type ChartDimensionSpec,\n type ChartGrain,\n type ChartMetricSpec,\n type ChartPoint,\n type ChartQueryCheck,\n ChartQueryError,\n type ChartQueryErrorKind,\n type ChartQueryOptions,\n type ChartResult,\n type ChartSeries,\n type ChartSpec,\n type ChartUnit,\n type ChartWindow,\n type ChartWindowUnit,\n chartBucketStart,\n chartToday,\n chartWindowRange,\n findChartDimension,\n findChartMetric,\n formatChartSpec,\n isChartQueryError,\n parseChartQuery,\n readChartSpec,\n validateChartSpec,\n} from './charts/index.js'\n// Dashboards - the tiles of a dashboard hold filters and never data. The\n// wire types and the placement rules are pure, so control-backend and\n// control-frontend run the same code.\nexport {\n DASHBOARD_TILE_DEFAULT_SIZE,\n dashboardDefinitionBytes,\n dashboardDefinitionFits,\n dashboardTileDefaultSize,\n emptyDashboardDefinition,\n isSafeDashboardLink,\n placeNewTile,\n placeNewTiles,\n tilesOverlap,\n toStoredDashboardDefinition,\n upgradeDashboardDefinition,\n} from './dashboards/definition.js'\nexport type {\n ALERT_SUBSCRIPTION_REPORT_TYPES,\n ALERT_SUBSCRIPTION_TYPES,\n AlertSubscriptionDto,\n AlertSubscriptionEntryDto,\n AlertSubscriptionWebhookAuth,\n CheckFailedReason,\n} from './dtos/AlertSubscription.dto.js'\n// DTOs - Values (constants)\nexport {\n FORBIDDEN_HOSTNAMES_FOR_WEBHOOK_ALERTS,\n HMAC_HEADER_POSITION,\n HMAC_SUPPORTED_ALGORITHM,\n} from './dtos/AlertSubscription.dto.js'\nexport type {\n AnnotationActor,\n AnnotationDto,\n AnnotationEntityKind,\n AnnotationKind,\n AnnotationLookupDto,\n AnnotationLookupEntryDto,\n AnnotationTagDto,\n EntityAnnotationsDto,\n} from './dtos/Annotation.dto.js'\nexport {\n ANNOTATION_BODY_MAX,\n ANNOTATION_ENTITY_KIND_LABELS,\n ANNOTATION_ENTITY_KINDS,\n ANNOTATION_ENTITY_MAX,\n ANNOTATION_KINDS,\n ANNOTATION_LOOKUP_MAX_ENTITIES,\n ANNOTATION_LOOKUP_TAGS_MAX,\n ANNOTATION_PAGE_SIZE_DEFAULT,\n ANNOTATION_PAGE_SIZE_MAX,\n ANNOTATION_SEARCH_MAX_LENGTH,\n ANNOTATION_TAG_NAME_MAX,\n normalizeTagName,\n} from './dtos/Annotation.dto.js'\nexport type { ApiClientStatsDto } from './dtos/ApiClientStats.dto.js'\n// Approvals - the wire types, and the rules that read them. Both are pure and\n// browser-safe, so control-backend, control-frontend and cloudbot run the same\n// code and cannot disagree.\nexport type {\n ApprovalAck,\n ApprovalActionMode,\n ApprovalActor,\n ApprovalEntityRef,\n ApprovalEntityType,\n ApprovalExecutionMode,\n ApprovalJobDto,\n ApprovalJobStatus,\n ApprovalM2mActor,\n ApprovalOverrideGrantDto,\n ApprovalProgress,\n ApprovalSortField,\n ApprovalSortOrder,\n ApprovalStatusCountsDto,\n ApprovalSummaryField,\n ApprovalSummaryFieldKind,\n ApprovalSummaryValue,\n ApprovalUseCaseDto,\n} from './dtos/ApprovalJob.dto.js'\nexport {\n APPROVAL_ACKS_MAX,\n APPROVAL_ENTITY_TYPES,\n APPROVAL_JOB_STATUSES,\n APPROVAL_LIST_SUMMARY_VALUES_MAX,\n APPROVAL_LIVE_STATUSES,\n APPROVAL_PAGE_SIZE_DEFAULT,\n APPROVAL_PAGE_SIZE_MAX,\n APPROVAL_PAYLOAD_ORG_FIELD,\n APPROVAL_REASON_MAX_LENGTH,\n APPROVAL_RUN_STALE_MS,\n APPROVAL_SEARCH_MAX_LENGTH,\n APPROVAL_SORT_DEFAULT,\n APPROVAL_SORT_FIELDS,\n APPROVAL_SUMMARY_FIELD_KINDS,\n APPROVAL_TYPE_FILTER_MAX,\n APPROVAL_TYPE_MAX_LENGTH,\n isRunStalled,\n progressFraction,\n} from './dtos/ApprovalJob.dto.js'\nexport type {\n ApprovalOrganizationNameResult,\n ApprovalSummaryNamesRequest,\n ApprovalSummaryNamesResult,\n} from './dtos/ApprovalSummaryNames.dto.js'\nexport type { AuditDto } from './dtos/Audit.dto.js'\nexport type { Auth0ResourceServerDto } from './dtos/Auth0ResourceServer.dto.js'\nexport type { BackupDto } from './dtos/Backup.dto.js'\nexport type { BackupScheduleDto } from './dtos/BackupSchedule.dto.js'\nexport type { ByomClientDto, ByomStatus } from './dtos/ByomClient.dto.js'\nexport type {\n ClusterCreationDefaultField,\n ClusterCreationDefaultKey,\n ClusterCreationDefaults,\n} from './dtos/ClusterCreationDefaults.dto.js'\nexport { CLUSTER_CREATION_DEFAULT_FIELDS } from './dtos/ClusterCreationDefaults.dto.js'\nexport type {\n ClusterDeferredSpecChange,\n DeferredSpecChangeType,\n} from './dtos/ClusterDeferredSpecChange.dto.js'\nexport type { ClusterIpWhitelistDto } from './dtos/ClusterIpWhitelist.dto.js'\nexport type {\n MoveClusterOwnerResult,\n MoveClusterWarnings,\n} from './dtos/ClusterOwnerMove.dto.js'\nexport type { ClusterPlanDto } from './dtos/ClusterPlan.dto.js'\nexport type { ClusterPlanTypeDto } from './dtos/ClusterPlanType.dto.js'\nexport type {\n ChangeClusterPlanTypeResult,\n ClusterModificationConfigRef,\n ClusterPlanTypeChangeRefusal,\n ClusterPlanTypeStateDto,\n} from './dtos/ClusterPlanTypeChange.dto.js'\nexport {\n CLUSTER_PLAN_TYPE_CHANGE_REFUSALS,\n clusterPlanTypeChangeRefusalOf,\n} from './dtos/ClusterPlanTypeChange.dto.js'\nexport type {\n ClusterSpecChange,\n ClusterSpecChangeActor,\n ClusterSpecHistory,\n} from './dtos/ClusterSpecHistory.dto.js'\nexport type {\n CommonClusterDto,\n ExternalIdpConfig,\n OptimizeFilteringConfig,\n OptimizeFilteringIncludeExclude,\n OptimizeFilteringPatch,\n SecretsFilterMode,\n ZeebeRebalancingSetting,\n} from './dtos/CommonCluster.dto.js'\nexport type { ConsoleClusterDto } from './dtos/ConsoleCluster.dto.js'\nexport type {\n ClusterActivityBucket,\n ClusterActivityTile,\n ClusterActivityV2Dto,\n ClusterActivityV2Response,\n ClusterByClientV2Dto,\n ClusterDatacenterOptionV2Dto,\n ClusterDetailV2Dto,\n ClusterFacetsV2Dto,\n ClusterListItemV2Dto,\n ClusterLiveStateV2Dto,\n ClusterLiveStateV2Entry,\n ClusterModificationState,\n ClusterParameterOptionV2Dto,\n ClusterParametersV2Dto,\n ClusterTtlFilter,\n ControlResolvedPermissions,\n ControlSessionDto,\n ControlSessionUser,\n CursorPage,\n CursorParams,\n ListClustersV2Params,\n ListOrganizationsV2Params,\n ListOrgMembersV2Params,\n OrgDetailV2Dto,\n OrgListItemV2Dto,\n OrgMemberV2Dto,\n OrgSummaryV2Dto,\n} from './dtos/ControlV2.dto.js'\nexport { CLUSTER_MODIFICATION_STATES } from './dtos/ControlV2.dto.js'\nexport type {\n DashboardActor,\n DashboardAnnotationsQuery,\n DashboardAnnotationsTile,\n DashboardAnnotationsTileV1,\n DashboardCatalogue,\n DashboardCatalogueChartMetric,\n DashboardCatalogueSearchField,\n DashboardChartQuery,\n DashboardChartRender,\n DashboardChartTile,\n DashboardChartTileV3,\n DashboardClusterCard,\n DashboardClusterDetailQuery,\n DashboardClusterDetailTile,\n DashboardClusterDetailTileV2,\n DashboardDefinition,\n DashboardDefinitionV1,\n DashboardDefinitionV2,\n DashboardDefinitionV3,\n DashboardDto,\n DashboardFleetQuery,\n DashboardFleetQueryTile,\n DashboardFleetQueryTileV1,\n DashboardHeadingTile,\n DashboardHeadingTileV2,\n DashboardLinkTile,\n DashboardLinkTileV2,\n DashboardListDto,\n DashboardNewTile,\n DashboardNoteTile,\n DashboardNoteTileV2,\n DashboardOrgCard,\n DashboardOrgDetailQuery,\n DashboardOrgDetailTile,\n DashboardOrgDetailTileV2,\n DashboardSummaryDto,\n DashboardTile,\n DashboardTileKind,\n DashboardTileLayout,\n DashboardTileV1,\n DashboardTileV2,\n DashboardTileV3,\n StoredDashboardDefinition,\n} from './dtos/Dashboard.dto.js'\nexport {\n DASHBOARD_CHART_RENDERS,\n DASHBOARD_CLUSTER_CARDS,\n DASHBOARD_DEFINITION_BYTES_MAX,\n DASHBOARD_DEFINITION_VERSION,\n DASHBOARD_ENTITY_ID_MAX,\n DASHBOARD_GRID_COLUMNS,\n DASHBOARD_GRID_ROWS_MAX,\n DASHBOARD_LINK_URL_MAX,\n DASHBOARD_NOTE_MAX,\n DASHBOARD_ORG_CARDS,\n DASHBOARD_PAGE_SIZE_DEFAULT,\n DASHBOARD_PAGE_SIZE_MAX,\n DASHBOARD_TILE_KINDS,\n DASHBOARD_TILE_ROWS_MAX,\n DASHBOARD_TILES_MAX,\n DASHBOARD_TITLE_MAX,\n} from './dtos/Dashboard.dto.js'\nexport type { EarlyAccessFeatureDto } from './dtos/EarlyAccessFeature.dto.js'\nexport type {\n CamundaWebApp,\n CamundaWebAppWithZeebe,\n ExternalClickwrapConfigDto,\n ExternalClusterDto,\n ExternalOrganizationDto,\n} from './dtos/ExternalWebapp.dto.js'\nexport type {\n CreateFeatureFlagDto,\n FeatureFlagAnswer,\n FeatureFlagDto,\n FeatureFlagListDto,\n UpdateFeatureFlagDto,\n} from './dtos/FeatureFlags.dto.js'\nexport type {\n ClusterGenerationStateDto,\n ForceGenerationUpgradeResult,\n} from './dtos/ForceGenerationUpgrade.dto.js'\n// Functions\nexport {\n activeGenerations,\n compareGenerationNamesNewestFirst,\n type GenerationDto,\n type GenerationWithClusterCountDto,\n sortGenerationBySemverOfZeebe,\n type UpgradableGenerationsDto,\n} from './dtos/Generations.dto.js'\nexport type { ChangeGenerationVersionsResult } from './dtos/GenerationVersionsChange.dto.js'\n// Namespace (type-only - contains only interfaces)\nexport type { Hdp } from './dtos/Hdp.dto.js'\nexport type {\n K8sBackupConfig,\n K8sConfig,\n K8sConfigLegacyFormat,\n K8sContext,\n K8sContextDto,\n} from './dtos/K8sContext.dto.js'\nexport type {\n M2mTokenCountDto,\n M2mTokenCountsDto,\n} from './dtos/M2mTokenCount.dto.js'\nexport type { MetaDto } from './dtos/Meta.dto.js'\nexport type {\n AutoJoinAssignment,\n LicensingModelType,\n LlmProviderName,\n OrganizationDto,\n OrganizationMetadata,\n OrgOwner,\n OrgWithNameAndSalesPlan,\n} from './dtos/Organization.dto.js'\nexport {\n LICENSING_MODEL_DISPLAY_NAMES,\n VALID_LICENSING_MODELS,\n} from './dtos/Organization.dto.js'\nexport type { OrganizationMemberDto } from './dtos/OrganizationMember.dto.js'\nexport type { OrganizationToSalesPlanDto } from './dtos/OrganizationToSalesPlan.dto.js'\nexport type {\n DryRunSanityDiff,\n ReleaseTrainPreview,\n ReleaseTrainSanityReport,\n SanityFix,\n SanityRuleInfo,\n SanitySeverity,\n SanityViolation,\n} from './dtos/ReleaseTrainSanity.dto.js'\nexport type { RestoreDto, RestoreState } from './dtos/Restore.dto.js'\n// SalesPlan.dto - Types\nexport type {\n ClusterLimits,\n ConsumptionDataItem,\n Limits,\n SalesPlanDto,\n SalesPlanMetadata,\n} from './dtos/SalesPlan.dto.js'\n// SalesPlan.dto - Values (constants and functions)\nexport {\n allClusterBasedLimits,\n allSalesPlanLimits,\n clusterPlanWhiteListIds,\n deprecatedLimit,\n generationWhiteListIds,\n isLimitKeyEnabled,\n isLimitOfferedOnStage,\n isUnlockedClusterPlansStage,\n MAX_CLUSTER_CLIENTS_DEFAULT,\n MAX_CLUSTER_CLIENTS_DEV,\n RETENTION_LIMIT_DEFAULT,\n RETENTION_LIMIT_MAXIMUM,\n RETENTION_LIMIT_MINIMUM,\n unusedClusterBasedLimits,\n unusedSalesPlanLimits,\n} from './dtos/SalesPlan.dto.js'\nexport type { SecureConnectivityDto } from './dtos/SecureConnectivity.dto.js'\nexport type { SignupDto } from './dtos/Signup.dto.js'\nexport type {\n StorybookConfig,\n StorybookConfigBackup,\n StorybookConfigChannel,\n StorybookConfigDatacenter,\n StorybookConfigGeneration,\n} from './dtos/StorybookConfig.dto.js'\nexport type { SystemAuditDto } from './dtos/SystemAudit.dto.js'\nexport type {\n UpgradeReadinessDto,\n UpgradeReadinessSource,\n UpgradeReadinessState,\n} from './dtos/UpgradeReadiness.dto.js'\n// UsageAlert.dto - Types\nexport type { UsageAlertDto } from './dtos/UsageAlert.dto.js'\n// UsageAlert.dto - Values (enum and constants)\nexport {\n UsageAlertInitValues,\n UsageAlertMetric,\n UsageAlertThresholdLimits,\n} from './dtos/UsageAlert.dto.js'\nexport type { UserMetaDataDto } from './dtos/UserMetaData.dto.js'\n// Lucene-style table search (parser + AST \u2192 SQL compiler + field registries).\nexport {\n type AndNode,\n CLUSTER_DEFAULT_SEARCH_FIELDS,\n CLUSTER_SEARCH_FIELDS,\n CLUSTER_TTL_SEARCH_FIELDS,\n type CompileContext,\n type CompiledQuery,\n clusterSearchFieldsForStage,\n compileQuery,\n type FieldBinding,\n findSearchField,\n idSetPredicate,\n isLuceneQueryError,\n joinIdSet,\n LuceneQueryError,\n likeArgument,\n type NotNode,\n ORG_DEFAULT_SEARCH_FIELDS,\n ORGANIZATION_SEARCH_FIELDS,\n type OrNode,\n parseLuceneQuery,\n type QueryNode,\n type RangeNode,\n type SearchFieldCapability,\n type SearchFieldSpec,\n type SearchFieldType,\n type SearchTermOperator,\n type SqlDialect,\n type TermNode,\n} from './search/index.js'\nexport { upgradeGateReason } from './utils/upgradeGateReason.utils.js'\n\n// ============================================================================\n// Enums (runtime values)\n// ============================================================================\n\nexport {\n AlertSubscriptionReportType,\n AlertSubscriptionType,\n} from './enums/AlertSubscription.enum.js'\nexport { AuditEntity, AuditEntityAttribute } from './enums/AuditEntity.enum.js'\nexport { AuditService } from './enums/AuditService.enum.js'\nexport { BackupStatus } from './enums/BackupStatus.enum.js'\nexport {\n ClusterBulkOperationStatus,\n ClusterBulkOperationType,\n} from './enums/ClusterBulkOperation.enum.js'\nexport { ClusterClientPermission } from './enums/ClusterClientPermissions.enum.js'\nexport { ClusterEncryptionKey } from './enums/ClusterEncryptionKey.enum.js'\nexport { ClusterStatus } from './enums/ClusterStatus.enum.js'\nexport { ConsoleAPIClientPermission } from './enums/ConsoleApiClientPermission.enum.js'\nexport { ErrorType } from './enums/ErrorType.enum.js'\nexport type {\n AssignableOrganizationRoleType,\n OrganizationRoleType,\n UnassignableOrganizationRoleType,\n} from './enums/OrganizationRole.enum.js'\nexport {\n AssignableOrganizationRole,\n LegacyHeldOrganizationRole,\n OrganizationRole,\n UnassignableOrganizationRole,\n} from './enums/OrganizationRole.enum.js'\nexport { SseEntity, SseType } from './enums/Sse.enum.js'\nexport {\n SystemAuditEntity,\n SystemAuditEntityAttribute,\n} from './enums/SystemAuditEntity.enum.js'\n\n// ============================================================================\n// Permissions - Namespaces (runtime values)\n// ============================================================================\n\nexport { AccountsPermissions } from './permissions/accounts.permissions.js'\nexport { AlertDistributorPermissions } from './permissions/alert-distributor.permissions.js'\nexport { AuditLoggerPermissions } from './permissions/auditlogger.permissions.js'\nexport {\n accountsUserFeaturesFromPermissions,\n consoleUserFeaturesFromPermissions,\n sessionHasPermission,\n sessionPermissionKeysFor,\n} from './permissions/combo.js'\nexport { ConsolePermissions } from './permissions/console.permissions.js'\nexport { NotificationPermissions } from './permissions/notification.permissions.js'\n// profile.permissions - Types\nexport type { OnboardConfig } from './permissions/profile.permissions.js'\n// profile.permissions - Values (constants)\n// NOTE: the `allowed` email lists (CLOUD_TEAM_EMAILS, SRE_TEAM_EMAILS, etc.)\n// intentionally live in the private `@camunda-cloud/shared-backend` package\n// instead of here, since this package is published publicly to npm.\nexport { PROFILES } from './permissions/profile.permissions.js'\nexport {\n ALL_PERMISSIONS_AT_AUTH0,\n expandRolesToPermissions,\n} from './permissions/roleExpansion.utils.js'\n\n// ============================================================================\n// Types - Type-only exports (interfaces and type aliases)\n// ============================================================================\n\nexport type { AuditData } from './types/AuditData.type.js'\n// AutoSleep.type - Types\nexport type {\n ActivitySleepEligibilityOptions,\n SleepCronEligibilityOptions,\n} from './types/AutoSleep.type.js'\n// AutoSleep.type - Values (constants and functions)\nexport {\n INTERNAL_LOW_HARDWARE_PLAN_NAME,\n isActivitySleepEligible,\n isClusterTagEligibleForSleepCron,\n isSalesPlanEligibleForSleepCron,\n isSleepCronEligible,\n SLEEP_CRON_ELIGIBLE_TAGS,\n} from './types/AutoSleep.type.js'\nexport type {\n BotContext,\n BotOptions,\n BotRequest,\n GetUserDetailsResponse,\n ListRolesForUserResponse,\n UpdateUserRolesRequest,\n UpdateUserRolesResponse,\n UserContext,\n UserDetails,\n} from './types/Bot.types.js'\n// BulkOperation.type - Types\nexport type {\n BulkClusterDeletionContent,\n BulkClusterDeletionItem,\n BulkClusterGenerationUpdateItem,\n BulkClusterPlanTypeUpdateContent,\n BulkClusterPlanTypeUpdateItem,\n BulkClusterPlanUpdateContent,\n BulkClusterPlanUpdateItem,\n BulkGenerationUpdateContent,\n GenericBulkClusterOperationContent,\n GenericBulkOperationContent,\n GenericClusterBulkOperationItem,\n} from './types/BulkOperation.type.js'\n// BulkOperation.type - Functions (type guards)\nexport {\n isBulkClusterDeletionItem,\n isBulkClusterPlanTypeUpdateItem,\n isBulkClusterPlanUpdateItem,\n isIsBulkClusterGenerationUpdateIten,\n} from './types/BulkOperation.type.js'\n// C8ClusterComponentVersions.type - Types\nexport type {\n GenerationEnvVarsDto,\n GenerationEnvVarsKey,\n GenerationImageVersionsDto,\n ImmutableZeebeClusterVersionsDto,\n MutableZeebeClusterVersionsDto,\n ZeebeClusterVersionsDto,\n} from './types/C8ClusterComponentVersions.type.js'\n// C8ClusterComponentVersions.type - Values (constants)\nexport {\n AllThings,\n GENERATION_ENV_VARS_KEYS,\n GENERATION_IMAGE_VERSION_KEYS,\n ImmutableThings,\n MutableThings,\n} from './types/C8ClusterComponentVersions.type.js'\n// CamundaClusterLabels.type - Types\nexport type {\n CamundaClusterStage,\n CamundaClusterStageLabel,\n ClusterLabels,\n} from './types/CamundaClusterLabels.type.js'\n// CamundaClusterLabels.type - Values (constants)\nexport {\n ALLOWED_CAMUNDA_LABELS,\n StageClusterLabels,\n} from './types/CamundaClusterLabels.type.js'\n// Chargebee.type - Types\nexport type { SubscriptionItem } from './types/Chargebee.type.js'\n// Chargebee.type - Values (enums)\nexport { ConsumptionData, ConsumptionDataType } from './types/Chargebee.type.js'\n// ClusterBulkOperation.type - Types\nexport type {\n ClusterBulkOperationAck,\n ClusterBulkOperationClusterDto,\n ClusterBulkOperationContent,\n ClusterBulkOperationDto,\n ClusterBulkOperationGenerationUpdateParameter,\n ClusterBulkOperationParameter,\n ClusterBulkOperationPlanTypeUpdateParameter,\n ClusterBulkOperationPlanUpdateParameter,\n ClusterBulkOperationPostContent,\n ClusterSleepWakeupParameter,\n} from './types/ClusterBulkOperation.type.js'\nexport type {\n ClusterModificationConfigDto,\n ClusterModificationDto,\n} from './types/ClusterModification.type.js'\n// ClusterPlanFields.type - Values (field spec and type guard)\nexport {\n CLUSTER_PLAN_FIELDS,\n type ClusterPlanFieldSpec,\n type ClusterPlanFieldTree,\n isClusterPlanFieldSpec,\n} from './types/ClusterPlanFields.type.js'\nexport type {\n ClusterPlanModificationAck,\n ClusterPlanModificationConfig,\n ClusterPlanModificationDto,\n} from './types/ClusterPlanModification.type.js'\n// ClusterPlanTypeAvailabilityClass.type - Values (enum and function)\nexport {\n ClusterPlanTypeAvailabilityClass,\n hasNoAvailabilityClass,\n sortByAvailabilityClasses,\n} from './types/ClusterPlanTypeAvailabilityClass.type.js'\n// ClusterPlanTypeCategory.type - Values (enum and functions)\nexport {\n ClusterPlanTypeCategory,\n hasAvailabilityClass,\n sortByClusterPlanTypeCategory,\n} from './types/ClusterPlanTypeCategory.type.js'\nexport type { ClusterPlanTypesToConfig } from './types/ClusterPlanTypesToConfig.type.js'\nexport type { ClusterPlanTypesToReserved } from './types/ClusterPlanTypesToReserved.type.js'\nexport type {\n ClusterTtlDeletionPayload,\n ClusterTtlDeletionResult,\n ClusterTtlDto,\n ClusterTtlDuration,\n ClusterTtlOption,\n ClusterTtlUnlimited,\n UpdateClusterTtlBody,\n} from './types/ClusterTtl.type.js'\nexport {\n CLUSTER_TTL_BACKFILL_REASON,\n CLUSTER_TTL_DURATION_MS,\n CLUSTER_TTL_DURATIONS,\n CLUSTER_TTL_FEATURE_FLAG,\n CLUSTER_TTL_OPTIONS,\n CLUSTER_TTL_UNLIMITED_LINK_MAX_LENGTH,\n CLUSTER_TTL_UNLIMITED_REASON_MAX_LENGTH,\n clusterTtlExpiresAt,\n DEFAULT_CLUSTER_TTL_OPTION,\n extendClusterTtl,\n isClusterTtlDuration,\n isClusterTtlOption,\n isClusterTtlStage,\n isHttpUrl,\n isPastClusterTtl,\n validateClusterTtlUnlimited,\n} from './types/ClusterTtl.type.js'\nexport type {\n ClusterUsageDataRequest,\n ClusterUsageMetadataDto,\n ClusterUsageMetricsAddRequestByMetricHeap,\n ClusterUsageMetricsData,\n ClusterUsageMetricsFilter,\n ClusterUsageOrgStartDate,\n} from './types/ClusterUsageMetrics.type.js'\n// Dashboard.types - Types\nexport type {\n DashboardConfig,\n DashboardMappingItem,\n DashboardMappingTarget,\n DashboardResultPrimitive,\n DashboardResultRow,\n EngineeringOperationsDashboardResponse,\n} from './types/Dashboard.types.js'\nexport type { EnterpriseIncludingValueMetrics } from './types/EnterpriseIncludingValueMetrics.type.js'\nexport type {\n HdpTenantUsageBreakdown,\n HdpTenantUsagePerClusterPoint,\n HdpTenantUsagePoint,\n} from './types/HdpTenantUsage.type.js'\n// hdp.types - Types (interfaces)\nexport type {\n AlertSubscription as HdpAlertSubscription,\n ByomClient as HdpByomClient,\n Channel as HdpChannel,\n Cluster as HdpCluster,\n ClusterBackup as HdpClusterBackup,\n ClusterBackupSchedule as HdpClusterBackupSchedule,\n ClusterBulkOperation as HdpClusterBulkOperation,\n ClusterClient as HdpClusterClient,\n ClusterModification as HdpClusterModification,\n ClusterPlan as HdpClusterPlan,\n ClusterPlanType as HdpClusterPlanType,\n ConnectorSecret as HdpConnectorSecret,\n ConsoleApiClient as HdpConsoleApiClient,\n Datacenter as HdpDatacenter,\n Generation as HdpGeneration,\n HdpBackendChangeEvent,\n HdpClusterModificationConfig,\n HdpDisk,\n HdpEntity,\n HdpPrometheusDataCapacityDataPoint,\n Invite as HdpInvite,\n LlmSpend as HdpLlmSpend,\n Organization as HdpOrganization,\n SecureConnectivity as HdpSecureConnectivity,\n SystemAudit as HdpSystemAudit,\n TelemetryData as HdpTelemetryData,\n UsageAlert as HdpUsageAlert,\n User as HdpUser,\n UserLogin as HdpUserLogin,\n} from './types/hdp.types.js'\n// hdp.types - Values (enums)\nexport {\n AlertSubscriptionReportType as HdpAlertSubscriptionReportType,\n AlertSubscriptionType as HdpAlertSubscriptionType,\n HDP_DISKS,\n} from './types/hdp.types.js'\n// notification.type - Types\nexport type {\n GlobalNotification,\n NotificationDto,\n NotificationMeta,\n NotificationOptions,\n NotificationPermission,\n NotificationSource,\n NotificationState,\n NotificationType,\n OrgNotification,\n UserNotification,\n UserOrgNotification,\n} from './types/notification.type.js'\n// notification.type - Values (enums and constants)\nexport {\n NotificationPermissionValues,\n NotificationSourceEnum,\n NotificationStateEnum,\n NotificationTypeEnum,\n} from './types/notification.type.js'\n// OrganizationPermission.type - Types\nexport type {\n CreateReadUpdateDelete,\n OrganizationPermissions,\n} from './types/OrganizationPermission.type.js'\n// OrganizationPermission.type - Values (constants)\nexport {\n OrganizationPermissionsDescriptions,\n PermissionsForOrganizationRole,\n} from './types/OrganizationPermission.type.js'\nexport {\n getPreprodClusterTtlHours,\n isPastPreprodClusterTtl,\n isPreprodClusterTtlStage,\n parseNumericLimit,\n} from './types/PreprodClusterTtl.type.js'\n// Roles.js - Types\nexport type {\n AccountRoles,\n ConsoleRoles,\n ModelerRoles,\n Roles,\n} from './types/Roles.js'\n// Roles.js - Values (constants)\nexport { SAFE_ROLES } from './types/Roles.js'\n// SalesPlanType.type - Types\nexport type {\n DisplayedSalesPlan,\n RevisitedSalesPlanName,\n} from './types/SalesPlanType.type.js'\n// SalesPlanType.type - Values (enums and functions)\nexport {\n AnalyticsSalesPlanType,\n getAnalyticsSalesPlanFromOrgSalesPlan,\n getDisplayedSalesPlan,\n getRevisitedSalesPlanName,\n OPTIMIZE_DISABLED_PLAN_TYPES,\n SalesPlanType,\n USAGE_SALES_PLAN_TYPES,\n} from './types/SalesPlanType.type.js'\n// SpamDetection.type - Types\nexport type { SpamDetectionPatterns } from './types/SpamDetection.type.js'\n// SpamDetection.type - Values (constants)\nexport { TEERGRUBE_PATTERNS } from './types/SpamDetection.type.js'\nexport type {\n AlertSubscriptionSseEvent,\n BackupSseEvent,\n ClusterClientSseEvent,\n ClusterSseEvent,\n ConnectorSecretsSseEvent,\n ConsoleApiClientSseEvent,\n ConsoleSseEvent,\n MonitoringSseEvent,\n SecureConnectivitySseEvent,\n SseClusterPayload,\n SseMonitoringPayload,\n SseSecureConnectivityPayload,\n} from './types/SseEvent.type.js'\n// Namespace (type-only - contains only interfaces)\nexport type { AccountsStats } from './types/Stats.types.js'\n// Survey.type - Types\nexport type { Persona, SurveyDto } from './types/Survey.type.js'\n// Survey.type - Values (enum)\nexport { FeedbackType } from './types/Survey.type.js'\n// SuspendStrategy.type - Types\nexport type {\n GetSuspendStrategyOptions,\n SuspendStrategy,\n} from './types/SuspendStrategy.type.js'\n// SuspendStrategy.type - Values (function)\nexport { getSuspendStrategy } from './types/SuspendStrategy.type.js'\nexport type { SystemAuditData } from './types/SystemAuditData.type.js'\n\n// Namespace (runtime value)\nexport { Telemetry } from './types/Telemetry.type.js'\n\n// TrialManagement.types - Types\nexport type {\n ExtensionListItem,\n ExtensionListResponse,\n OrgTrialDetail,\n TrialExtensionSource,\n TrialManagementStats,\n} from './types/TrialManagement.types.js'\n\n// User.type - Types\nexport type {\n AccountsData,\n AppMetadata,\n BasicUser,\n BlockedFor,\n Identity,\n OrgMembership,\n User,\n UserMetadata,\n UserRequest,\n} from './types/User.type.js'\n\n// User.type - Values (enum)\nexport { UserMetadataEvent } from './types/User.type.js'\n\nexport type {\n UniqueTaskUser,\n ValueMetrics,\n ValueMetricsPerYearMonth,\n} from './types/ValueMetrics.type.js'\n\n// ============================================================================\n// Utils - Classes (runtime values)\n// ============================================================================\n\nexport {\n CLOUD_PROVIDER_ORDER,\n getCloudProviderLabel,\n getCloudProviderRank,\n} from './utils/cloudProvider.utils.js'\nexport {\n type ConnectivityStatus,\n deriveConnectivityMessage,\n deriveConnectivityStatus,\n} from './utils/connectivityStatus.utils.js'\nexport type {\n CronScheduleValidationFailure,\n CronScheduleValidationResult,\n CronScheduleValidationSuccess,\n} from './utils/cronSchedule.utils.js'\nexport {\n BACKUP_SCHEDULE_MIN_INTERVAL_MINUTES,\n validateCronSchedule,\n} from './utils/cronSchedule.utils.js'\nexport {\n canonicalPlan,\n canonicalPlanKey,\n canonicalPlanModifications,\n} from './utils/elasticsearchPlanPath.utils.js'\nexport {\n deriveEncryptionStatus,\n type EncryptionStatus,\n isEncryptionStatus,\n} from './utils/encryptionStatus.utils.js'\n// enterprise-connection.utils - Types\nexport type { EnterpriseConnectionOrganizationAssignment } from './utils/enterprise-connection.utils.js'\n// enterprise-connection.utils - Values (functions)\nexport {\n enterpriseConnectionMetadataToOrganizationAssignments,\n organizationAssignmentsToEnterpriseConnectionMetadata,\n} from './utils/enterprise-connection.utils.js'\nexport {\n addMonthsClamped,\n DEFAULT_ENTERPRISE_DURATION_IN_MONTHS,\n diffInWholeMonths,\n type EnterpriseTermWindow,\n getCurrentEnterpriseTerm,\n peakWithinTerm,\n toUtcDayStartMs,\n} from './utils/enterpriseTerm.utils.js'\nexport type { EnvVarEntry } from './utils/envVars.js'\nexport { parseEnvVars, serializeEnvVars } from './utils/envVars.js'\nexport {\n deriveFailoverKeyPolicyPrincipals,\n type FailoverKeyPolicyPrincipals,\n} from './utils/failoverKeyPolicy.utils.js'\nexport type {\n JvmOptionsModificationKey,\n ParsedJvmOption,\n} from './utils/jvmOptions.js'\nexport {\n addsEnvVarsOverrideValue,\n isJvmOptionsModificationKey,\n isUnderJvmSpec,\n isValidJvmOptionsPlanValue,\n JVM_OPTION_MAX_LENGTH,\n JVM_OPTION_PATTERN,\n JVM_OPTIONS_MAX_ITEMS,\n JVM_OPTIONS_MODIFICATION_KEYS,\n JVM_OPTIONS_TARGETS,\n joinJvmOptions,\n jvmOptionsOfPlanValue,\n parseJvmOption,\n requiresEnvVarsOverride,\n splitJvmOptions,\n validateJvmOptions,\n validateJvmOptionsPlanValue,\n validateJvmOptionsValue,\n} from './utils/jvmOptions.js'\nexport {\n KMS_ARN,\n KMS_MRK_ARN,\n type KmsArnValidationError,\n type ParsedKmsArn,\n parseKmsArn,\n validateKmsArnForRegion,\n} from './utils/kmsArn.utils.js'\nexport { validateLabels } from './utils/labelValidator.utils.js'\nexport { ObjectMergeUtils } from './utils/objectMerge.utils.js'\nexport { getAtPath } from './utils/objectPath.utils.js'\nexport {\n computeOrgStartDate,\n type OrgStartDateInput,\n} from './utils/orgStartDate.utils.js'\nexport {\n getPermissionsByRoles,\n getUserPermissionsForOrg,\n} from './utils/orgs/OrgHelper.js'\n\n// PasswordPolicy - Types\nexport type {\n PasswordPolicyRequest,\n PasswordPolicyResult,\n} from './utils/PasswordPolicy.js'\n\n// PasswordPolicy - Values (constants and function)\nexport {\n MAXLENGTH as PASSWORD_POLICY_MAXLENGTH,\n MINLENGTH as PASSWORD_POLICY_MINLENGTH,\n passwordPolicyCheck,\n} from './utils/PasswordPolicy.js'\nexport { isQaUserEmail, qaUserEmail } from './utils/qa-user.utils.js'\nexport {\n deriveSecondaryStorageStatus,\n type SecondaryStorageStatus,\n} from './utils/secondaryStorageStatus.utils.js'\nexport {\n allSettledResultsCounts,\n getFulfilledPromises,\n getRejectedPromises,\n getSettledSummary,\n} from './utils/settledPromises.util.js'\nexport {\n isValidAwsArn,\n isValidCIDR,\n isValidCIDRList,\n isValidClientName,\n isValidHostname,\n isValidPrivateLinkRegion,\n normalizeCIDRList,\n} from './utils/string-validation.utils.js'\nexport {\n extractCamundaUserEmail,\n guessName,\n isCamundaUserId,\n} from './utils/user.utils.js'\n\n// versionCheck.utils - Values (enum and function)\nexport {\n checkVersion,\n generationImageErrorMessage,\n isAppIntegrationsVersionSupported,\n isGenerationResumable,\n isSecretsFilterModeConfigurable,\n isValidGenerationImage,\n normalizeGenerationVersion,\n stripSecfixPostfix,\n VersionCheckOperator,\n} from './utils/versionCheck.utils.js'\nexport type { ZeebeRebalancingValidationErrors } from './utils/zeebeRebalancing.utils.js'\nexport {\n validateZeebeRebalancing,\n ZEEBE_REBALANCING_FEATURE_FLAG,\n} from './utils/zeebeRebalancing.utils.js'\n\n// ============================================================================\n// Config - Configuration files and types\n// ============================================================================\n\nexport { default as CAMUNDI_PERMISSION_RULES } from './config/camundi-permission-rules.js'\nexport type { CamundiPermissionRules } from './config/camundi-permission-rules.types.js'\n\nexport {\n augmentCamundiPermissions,\n getApplicableRolesForEmployee,\n HIBOB_CACHE_KEY,\n HIBOB_CACHE_NAMESPACE,\n isManager,\n} from './utils/camundiPermissionAugmenter.utils.js'\n"],
|
|
5
|
-
"mappings": "AAUA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP,SAAS,KAAK,MAAM,QAAQ,QAAQ,YAAY;AAEhD;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP,SAAS,4BAA4B;AACrC,SAAS,iDAAiD;AAC1D,SAAS,6CAA6C;AAKtD,SAAS,wCAAwC;AACjD;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AA4BP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AASP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAKP;AAAA,EACE;AAAA,EACA;AAAA,OACK;AAMP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAeP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAOP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP;AAAA,EACE;AAAA,EACA;AAAA,OACK;AAEP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAEP;AAAA,EACE;AAAA,EACA;AAAA,OACK;AAMP,SAAS,mDAAmD;AAM5D;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAOP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAEP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAMA;AAAA,EASA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAIP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;
|
|
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// Constants (runtime values)\n// ============================================================================\n\nexport {\n ACTIVITY_RETENTION_CHOICES,\n ACTIVITY_RETENTION_DEFAULT_MONTHS,\n ACTIVITY_RETENTION_FLAG,\n ACTIVITY_RETENTION_KEEP_FOREVER,\n ACTIVITY_RETENTION_SYNC_CHUNK,\n type ActivityRetentionMonths,\n activityRetentionCutoff,\n activityRetentionLabel,\n isActivityRetentionMonths,\n isLimitedActivityRetention,\n} from './constants/activity-retention.const.js'\nexport {\n CUSTOM_GENERATION_MAX_PER_REQUESTER,\n CUSTOM_GENERATION_MAX_UPGRADEABLE_FROM,\n CUSTOM_GENERATION_NAME_MAX_LENGTH,\n CUSTOM_GENERATION_NAME_MIN_LENGTH,\n checkNewGenerationVersions,\n isCustomGenerationStage,\n} from './constants/custom-generation.const.js'\nexport {\n CUSTOM_HARDWARE_SIZING_BROKER_TOTAL_CAPS,\n CUSTOM_HARDWARE_SIZING_COUNT_CAPS,\n CUSTOM_HARDWARE_SIZING_ELASTICSEARCH_TOTAL_CAPS,\n CUSTOM_HARDWARE_SIZING_MAX_AUTO_RESIZE_INCREASE_GI,\n CUSTOM_HARDWARE_SIZING_MAX_PLAN_JSON_LENGTH,\n CUSTOM_HARDWARE_SIZING_MAX_PLANS_PER_REQUESTER,\n CUSTOM_HARDWARE_SIZING_NAME_MAX_LENGTH,\n CUSTOM_HARDWARE_SIZING_NAME_MIN_LENGTH,\n CUSTOM_HARDWARE_SIZING_REPLICA_SET_TOTAL_CAPS,\n CUSTOM_HARDWARE_SIZING_RESOURCE_CAPS,\n checkCustomHardwareSizing,\n isCustomHardwareSizingStage,\n parseKubernetesQuantity,\n} from './constants/custom-hardware-sizing.const.js'\nexport {\n APPROVAL_ENTRY_HEADER,\n CAMUNDI_APPROVAL_FLOW_FLAG,\n DIRECT_ROUTE_LOCK_HEADERS,\n DIRECT_ROUTE_LOCKED,\n directRouteLockHeaders,\n ERROR_CODE_HEADER,\n} from './constants/direct-route-lock.const.js'\nexport { DAY, HOUR, MINUTE, SECOND, WEEK } from './constants/duration.const.js'\nexport type { Stage } from './constants/misc.const.js'\nexport {\n CAMUNDA_CLAIMS_NAMESPACE,\n CONSOLE_API_USER_ID,\n countBulkOperationAcks,\n FIRSTNAME_LASTNAME_MAX_LENGTH,\n HOTBACKUP_MIN_CREATE_PERIOD,\n MAX_HARDWARE_PACKAGE_COUNT,\n MAX_LENGTH_CLUSTER_NAME,\n MIGRATION_BACKUP_ID_LABEL_PREFIX,\n MINIMUM_EYEPAIRS,\n MINIMUM_EYEPAIRS_BY_BULK_OPERATION_TYPE,\n minimumBulkOperationAcks,\n minimumBulkOperationEyes,\n missingBulkOperationAcks,\n NAMES_OF_ENTERPRISE_SALESPLANS_WITH_SLEEPING_CLUSTERS,\n requiredBulkOperationAcks,\n SECRETS_MAX_LENGTH,\n STARTING_PRICE_PER_MONTH_IN_EURO,\n TEMPORARY_CLUSTER_NAME,\n UNKNOWN_ACTOR_EMAIL,\n} from './constants/misc.const.js'\nexport {\n getGatewayPropertyHint,\n getGatewayPropertyPath,\n isAffectedByStreamlinedDeployment,\n isPre89AffectedPath,\n PRE89_AFFECTED_PATHS,\n PRE89_AFFECTED_PROPERTY_PREFIXES,\n PRE89_GATEWAY_PROPERTY_PATHS,\n PRE89_GATEWAY_RESOURCE_PREFIXES,\n} from './constants/pre89EnvVarMapping.const.js'\nexport { PRIVATE_LINK_REGIONS } from './constants/privateLinkRegions.const.js'\nexport { SECURE_CONNECTIVITY_ALLOWED_ENTRIES_LIMIT } from './constants/secureConnectivity.const.js'\nexport { isSelfServiceClusterModificationStage } from './constants/self-service-cluster-modification.const.js'\nexport type {\n TrialExtensionSurveyAnswer,\n TrialExtensionSurveyQuestion,\n} from './constants/trialExtensionSurvey.const.js'\nexport { TRIAL_EXTENSION_SURVEY_QUESTIONS } from './constants/trialExtensionSurvey.const.js'\nexport {\n V2_BODY_IDS_MAX,\n V2_FILTER_IDS_MAX,\n V2_MAX_PAGE_LIMIT,\n} from './constants/v2-list.const.js'\nexport {\n ADMIN_APP_RENAME_MIN_VERSION,\n APP_INTEGRATIONS_89_STREAM_CONNECTOR_BRIDGE_MIN_VERSION,\n APP_INTEGRATIONS_89_STREAM_MINOR,\n APP_INTEGRATIONS_89_STREAM_ZEEBE_MIN_VERSION,\n APP_INTEGRATIONS_MIN_VERSION,\n AUDIT_LOG_TAB_MIN_VERSION,\n AUTHORIZATION_TOGGLE_MIN_VERSION,\n AWS_ONLY_GENERATION_MIN_VERSION,\n BUSINESS_ID_UNIQUENESS_MIN_VERSION,\n BYOIDP_MIN_VERSION,\n CLUSTER_SECRETS_LABEL_MIN_VERSION,\n CLUSTER_STATISTICS_CONFIG_MIN_VERSION,\n CONNECTOR_MANAGEMENT_METRICS_MIN_VERSION,\n CONNECTOR_SECRET_SYNC_MIN_VERSION,\n CONNECTORS_MANAGEMENT_LINK_MIN_VERSION,\n ENFORCE_GROUPS_TASKLIST_V2_HIDDEN_MIN_VERSION,\n ENFORCE_GROUPS_TOGGLE_MIN_VERSION,\n GATEWAY_SPEC_8_9_MIN_VERSION,\n HOT_BACKUP_MIN_VERSION,\n IDENTITY_AUTHORIZATION_MIN_VERSION,\n IDENTITY_AUTHORIZATION_NOTICE_MAX_VERSION,\n IDENTITY_MANAGEMENT_MIN_VERSION,\n INTERNAL_CONNECTORS_MANAGEMENT_MIN_VERSION,\n JOB_DASHBOARD_MIN_VERSION,\n LINE_8_9_MIN_VERSION,\n LINE_8_10_MIN_VERSION,\n MCP_MIN_VERSION,\n MULTI_TENANCY_TOGGLE_MIN_VERSION,\n NEW_CLUSTER_ROLES_MIN_VERSION,\n OPTIMIZE_DEFAULT_ON_MIN_VERSION,\n OPTIMIZE_FILTERING_MIN_VERSION,\n OPTIONAL_TELEMETRY_MIN_VERSION,\n RESOURCE_BASED_AUTHORIZATIONS_MIN_VERSION,\n REST_API_URL_TRANSFORM_MIN_VERSION,\n REST_API_V2_MIN_VERSION,\n RESUME_ALPHA_MIN_VERSION,\n SECRET_SOURCE_MIN_VERSION,\n SECRETS_FILTER_MODE_8_6_MIN_VERSION,\n SECRETS_FILTER_MODE_8_7_MIN_VERSION,\n SECRETS_FILTER_MODE_8_8_MIN_VERSION,\n SECRETS_FILTER_MODE_8_9_MIN_VERSION,\n SECRETS_FILTER_MODE_8_10_MIN_VERSION,\n SESSION_CONFIG_MIN_VERSION,\n SWAGGER_MIN_VERSION,\n SWAGGER_URL_8_9_MIN_VERSION,\n TASKLIST_MODE_TOGGLE_MIN_VERSION,\n TASKLIST_UPGRADE_BANNER_MIN_VERSION,\n TASKLIST_V2_AUTO_ENABLE_FROM_MINOR,\n TASKLIST_V2_AUTO_ENABLE_TO_MINOR,\n TASKLIST_V2_DEFAULT_ON_MIN_VERSION,\n TASKLIST_V2_SETTING_MAX_VERSION,\n TASKLIST_V2_UPGRADE_MIN_VERSION,\n TASKLIST_V2_UPGRADE_TARGET_MIN_VERSION,\n UPGRADE_READINESS_MIN_VERSION,\n ZEEBE_REST_URL_MIN_VERSION,\n} from './constants/version-gates.const.js'\n\n// ============================================================================\n// DTOs - Types (interfaces and type aliases)\n// ============================================================================\n\n// Agent tokens - the read-only machine credentials of ccmacli. control-backend\n// stores them, and token-issuer, console-backend and accounts-backend read the\n// same claim and permission sets.\nexport type {\n AgentAccess,\n AgentClaim,\n AgentGrantCreated,\n AgentGrantRefusal,\n AgentGrantRefusalReason,\n AgentStatusResponse,\n AgentToken,\n AgentTokenAdmin,\n AgentTokenCreated,\n AgentTokenExpiryDays,\n AgentTokenKind,\n AgentTokenStatus,\n AgentVerifyResponse,\n CreateAgentGrantDto,\n CreateAgentTokenDto,\n ExtendAgentTokenDto,\n RedeemAgentGrantDto,\n} from './agent-tokens/agent-tokens.js'\nexport {\n AGENT_CLAIM,\n AGENT_CLIENT_ID_PREFIX,\n AGENT_ERROR,\n AGENT_GRANT_TTL_MS,\n AGENT_GRANTS_PER_HOUR_MAX,\n AGENT_READ_PERMISSIONS,\n AGENT_SLACK_CHANNEL_PATTERN,\n AGENT_SLACK_GRANTS_FEATURE_FLAG,\n AGENT_TOKEN_EXPIRY_DAYS,\n AGENT_TOKEN_NAME_MAX,\n AGENT_TOKEN_STATUSES,\n AGENT_TOKENS_ACTIVE_MAX,\n AGENT_TOKENS_FEATURE_FLAG,\n agentReadPermissionUnion,\n parseAgentClaim,\n} from './agent-tokens/agent-tokens.js'\n// Annotations - the notes and the tags that a Camundi attaches to a fleet\n// entity. The wire types and the rules are pure and browser-safe, so\n// control-backend and control-frontend run the same code.\nexport type {\n AnnotationActorView,\n AnnotationDecision,\n AnnotationDenialCode,\n} from './annotations/policy.js'\nexport {\n ANNOTATION_DENIAL_MESSAGES,\n canEditNote,\n canRemove,\n checkNoteBody,\n checkTagName,\n isAuthor,\n} from './annotations/policy.js'\nexport type {\n ApprovalRule,\n StageDependentApprovalType,\n} from './approvals/approval-rules.js'\nexport {\n APPROVAL_RULES,\n approvalsRequiredFor,\n} from './approvals/approval-rules.js'\nexport type {\n ChangePlanTypeRetentionLimitsResult,\n ClusterPlanTypeLimitsDto,\n PlanTypeRetentionLimitKey,\n} from './approvals/change-plan-type-retention-limits.js'\nexport {\n isRetentionLimitInBounds,\n PLAN_TYPE_RETENTION_LIMIT_KEY_LIST,\n PLAN_TYPE_RETENTION_LIMIT_KEYS,\n retentionLimitsOf,\n sameRetentionLimits,\n} from './approvals/change-plan-type-retention-limits.js'\nexport type {\n ClusterBulkClusterResultDto,\n ClusterBulkFinalStatus,\n ClusterBulkGenerationUpdateSettings,\n ClusterBulkOperationPayloadDto,\n ClusterBulkOperationRule,\n ClusterBulkPlanTypeUpdateSettings,\n ClusterBulkPlanUpdateSettings,\n ClusterBulkSettingsByType,\n ClusterBulkSleepWakeupSettings,\n ClusterBulkStepRequestDto,\n ClusterBulkStepResultDto,\n ClusterBulkTargetDto,\n} from './approvals/cluster-bulk-operation.js'\nexport {\n CLUSTER_BULK_OPERATION_CLUSTER_NAME_MAX_LENGTH,\n CLUSTER_BULK_OPERATION_MAX_CLUSTERS,\n CLUSTER_BULK_OPERATION_NAME_MAX_LENGTH,\n CLUSTER_BULK_OPERATION_RULES,\n CLUSTER_BULK_OPERATION_TYPES,\n CLUSTER_BULK_SLEEPING_CLUSTER_DELAY_MS,\n clusterBulkOperationTypeOf,\n clusterBulkParameterOf,\n clusterBulkRequiredPermissions,\n clusterBulkResultOf,\n isClusterBulkYolo,\n} from './approvals/cluster-bulk-operation.js'\nexport type {\n ClusterCorpseDto,\n ClusterCorpseKind,\n ClusterCorpsesDto,\n DeleteClusterCorpseResult,\n} from './approvals/delete-cluster-corpses.js'\nexport {\n CLUSTER_CORPSE_KINDS,\n CLUSTER_CORPSE_MIN_AGE_MS,\n DELETE_CLUSTER_CORPSES_MAX,\n} from './approvals/delete-cluster-corpses.js'\nexport {\n DNS_SUBDOMAIN_MAX_LENGTH,\n isDnsSubdomain,\n} from './approvals/dns-subdomain.js'\nexport type { EditGenerationResult } from './approvals/edit-generation.js'\nexport {\n EDIT_GENERATION_ENV_VARS_MAX_LENGTH,\n EDIT_GENERATION_EXPECTED_MAX_LENGTH,\n EDIT_GENERATION_NAME_MAX_LENGTH,\n} from './approvals/edit-generation.js'\nexport type { ApprovalExpectedChange } from './approvals/expected-value.js'\nexport {\n isSameApprovalValue,\n staleApprovalKeys,\n} from './approvals/expected-value.js'\nexport type {\n ClusterPlanTypeClusterDto,\n ClusterPlanTypeClustersDto,\n ForceDeleteClusterPlanTypeStepResult,\n} from './approvals/force-delete-cluster-plan-type.js'\nexport { FORCE_DELETE_CLUSTER_PLAN_TYPE_MAX_CLUSTERS } from './approvals/force-delete-cluster-plan-type.js'\nexport type {\n ApprovalActorView,\n ApprovalDecision,\n ApprovalDenialCode,\n} from './approvals/policy.js'\nexport {\n approvalPermissionCheck,\n canAcknowledge,\n canCreate,\n canExecute,\n canOverride,\n canReject,\n canRunOverridden,\n canView,\n canWithdraw,\n createPermissionsOf,\n EXECUTE_WINDOW_DAYS,\n effectiveStatus,\n hasActorEmail,\n hasEveryPermission,\n hasFailedRun,\n isExpired,\n isOverrideGrantActive,\n isRunWindowClosed,\n isSameActor,\n isSameActorEmail,\n needsReason,\n OVERRIDE_GRANT_ENDED_MESSAGE,\n opensWithOwnApproval,\n overrideGranteeOf,\n remainingAcks,\n requiredPermissionsOf,\n resolveRequiredAcks,\n runWindowEnd,\n} from './approvals/policy.js'\nexport type {\n ReleaseTrainAutoUpgradeCandidates,\n ReleaseTrainPublishPayload,\n ReleaseTrainRollbackPayload,\n} from './approvals/release-train.js'\nexport type { ApprovalUseCaseType } from './approvals/use-cases.const.js'\nexport {\n APPROVAL_EMAIL_MAX_LENGTH,\n APPROVAL_EMAIL_PATTERN,\n APPROVAL_OVERRIDE_DEFAULT_HOURS,\n APPROVAL_OVERRIDE_DENYLIST,\n APPROVAL_OVERRIDE_MAX_HOURS,\n APPROVAL_USE_CASE_TYPES,\n ENTERPRISE_ONBOARDING_METRIC_MAX,\n ENTERPRISE_ONBOARDING_NAME_MAX_LENGTH,\n ENTERPRISE_ONBOARDING_RESERVATION_MAX,\n ENTERPRISE_ONBOARDING_SFDC_ID_MAX_LENGTH,\n ENTERPRISE_ONBOARDING_TERM_MAX_MONTHS,\n ENTERPRISE_ONBOARDING_TERM_MIN_MONTHS,\n EXTEND_TRIAL_MAX_DAYS,\n EXTEND_TRIAL_MIN_DAYS,\n enterpriseContractChangePermissions,\n GENERATION_VERSION_VALUE_MAX_LENGTH,\n GENERATION_VERSIONS_MAX_GENERATIONS,\n isApprovalOverridable,\n isCalendarDay,\n isLlmSpendBelowTopUpThreshold,\n LLM_BUDGET_TOP_UP_THRESHOLD,\n ORG_LIMIT_TEXT_MAX_LENGTH,\n ORG_RESERVATION_MAX,\n PERSONAL_ORGANIZATION_MAX_PER_REQUESTER,\n PERSONAL_ORGANIZATION_NAME_MAX_LENGTH,\n PERSONAL_ORGANIZATION_NAME_MIN_LENGTH,\n PLATFORM_ROLE_CHANGE_MAX_ROLES,\n PURGE_USERS_MAX_USERS,\n PURGE_USERS_REQUIRED_PERMISSIONS,\n REMOVE_ORG_MEMBER_REQUIRED_PERMISSIONS,\n USER_METADATA_EXPECTED_MAX_LENGTH,\n USER_METADATA_MAX_LENGTH,\n} from './approvals/use-cases.const.js'\n// The chart query of a dashboard tile (catalogue, language, result).\nexport {\n CHART_DAY_GRAIN_MAX_DAYS,\n CHART_FILTER_MAX_LENGTH,\n CHART_GRAIN_DEFAULT,\n CHART_GRAINS,\n CHART_ID_MAX_LENGTH,\n CHART_METRICS,\n CHART_OTHER_SERIES_KEY,\n CHART_QUERY_MAX_LENGTH,\n CHART_TOP_DEFAULT,\n CHART_TOP_MAX,\n CHART_UNKNOWN_SERIES_KEY,\n CHART_WINDOW_AMOUNT_MAX,\n CHART_WINDOW_DEFAULT,\n CHART_WINDOW_UNITS,\n type ChartDimensionSpec,\n type ChartGrain,\n type ChartMetricSpec,\n type ChartPoint,\n type ChartQueryCheck,\n ChartQueryError,\n type ChartQueryErrorKind,\n type ChartQueryOptions,\n type ChartResult,\n type ChartSeries,\n type ChartSpec,\n type ChartUnit,\n type ChartWindow,\n type ChartWindowUnit,\n chartBucketStart,\n chartToday,\n chartWindowRange,\n findChartDimension,\n findChartMetric,\n formatChartSpec,\n isChartQueryError,\n parseChartQuery,\n readChartSpec,\n validateChartSpec,\n} from './charts/index.js'\n// Dashboards - the tiles of a dashboard hold filters and never data. The\n// wire types and the placement rules are pure, so control-backend and\n// control-frontend run the same code.\nexport {\n DASHBOARD_TILE_DEFAULT_SIZE,\n dashboardDefinitionBytes,\n dashboardDefinitionFits,\n dashboardTileDefaultSize,\n emptyDashboardDefinition,\n isSafeDashboardLink,\n placeNewTile,\n placeNewTiles,\n tilesOverlap,\n toStoredDashboardDefinition,\n upgradeDashboardDefinition,\n} from './dashboards/definition.js'\nexport type { ActiveUsersDto } from './dtos/ActiveUsers.dto.js'\nexport type {\n ALERT_SUBSCRIPTION_REPORT_TYPES,\n ALERT_SUBSCRIPTION_TYPES,\n AlertSubscriptionDto,\n AlertSubscriptionEntryDto,\n AlertSubscriptionWebhookAuth,\n CheckFailedReason,\n} from './dtos/AlertSubscription.dto.js'\n// DTOs - Values (constants)\nexport {\n FORBIDDEN_HOSTNAMES_FOR_WEBHOOK_ALERTS,\n HMAC_HEADER_POSITION,\n HMAC_SUPPORTED_ALGORITHM,\n} from './dtos/AlertSubscription.dto.js'\nexport type {\n AnnotationActor,\n AnnotationDto,\n AnnotationEntityKind,\n AnnotationKind,\n AnnotationLookupDto,\n AnnotationLookupEntryDto,\n AnnotationTagDto,\n EntityAnnotationsDto,\n} from './dtos/Annotation.dto.js'\nexport {\n ANNOTATION_BODY_MAX,\n ANNOTATION_ENTITY_KIND_LABELS,\n ANNOTATION_ENTITY_KINDS,\n ANNOTATION_ENTITY_MAX,\n ANNOTATION_KINDS,\n ANNOTATION_LOOKUP_MAX_ENTITIES,\n ANNOTATION_LOOKUP_TAGS_MAX,\n ANNOTATION_PAGE_SIZE_DEFAULT,\n ANNOTATION_PAGE_SIZE_MAX,\n ANNOTATION_SEARCH_MAX_LENGTH,\n ANNOTATION_TAG_NAME_MAX,\n normalizeTagName,\n} from './dtos/Annotation.dto.js'\nexport type { ApiClientStatsDto } from './dtos/ApiClientStats.dto.js'\n// Approvals - the wire types, and the rules that read them. Both are pure and\n// browser-safe, so control-backend, control-frontend and cloudbot run the same\n// code and cannot disagree.\nexport type {\n ApprovalAck,\n ApprovalActionMode,\n ApprovalActor,\n ApprovalEntityRef,\n ApprovalEntityType,\n ApprovalExecutionMode,\n ApprovalJobDto,\n ApprovalJobStatus,\n ApprovalM2mActor,\n ApprovalOverrideGrantDto,\n ApprovalProgress,\n ApprovalSortField,\n ApprovalSortOrder,\n ApprovalStatusCountsDto,\n ApprovalSummaryField,\n ApprovalSummaryFieldKind,\n ApprovalSummaryValue,\n ApprovalUseCaseDto,\n} from './dtos/ApprovalJob.dto.js'\nexport {\n APPROVAL_ACKS_MAX,\n APPROVAL_ENTITY_TYPES,\n APPROVAL_JOB_STATUSES,\n APPROVAL_LIST_SUMMARY_VALUES_MAX,\n APPROVAL_LIVE_STATUSES,\n APPROVAL_PAGE_SIZE_DEFAULT,\n APPROVAL_PAGE_SIZE_MAX,\n APPROVAL_PAYLOAD_ORG_FIELD,\n APPROVAL_REASON_MAX_LENGTH,\n APPROVAL_RUN_STALE_MS,\n APPROVAL_SEARCH_MAX_LENGTH,\n APPROVAL_SORT_DEFAULT,\n APPROVAL_SORT_FIELDS,\n APPROVAL_SUMMARY_FIELD_KINDS,\n APPROVAL_TYPE_FILTER_MAX,\n APPROVAL_TYPE_MAX_LENGTH,\n isRunStalled,\n progressFraction,\n} from './dtos/ApprovalJob.dto.js'\nexport type {\n ApprovalOrganizationNameResult,\n ApprovalSummaryNamesRequest,\n ApprovalSummaryNamesResult,\n} from './dtos/ApprovalSummaryNames.dto.js'\nexport type { AuditDto } from './dtos/Audit.dto.js'\nexport type { Auth0ResourceServerDto } from './dtos/Auth0ResourceServer.dto.js'\nexport type { BackupDto } from './dtos/Backup.dto.js'\nexport type { BackupScheduleDto } from './dtos/BackupSchedule.dto.js'\nexport type { ByomClientDto, ByomStatus } from './dtos/ByomClient.dto.js'\nexport type {\n ClusterCreationDefaultField,\n ClusterCreationDefaultKey,\n ClusterCreationDefaults,\n} from './dtos/ClusterCreationDefaults.dto.js'\nexport { CLUSTER_CREATION_DEFAULT_FIELDS } from './dtos/ClusterCreationDefaults.dto.js'\nexport type {\n ClusterDeferredSpecChange,\n DeferredSpecChangeType,\n} from './dtos/ClusterDeferredSpecChange.dto.js'\nexport type { ClusterIpWhitelistDto } from './dtos/ClusterIpWhitelist.dto.js'\nexport type {\n MoveClusterOwnerResult,\n MoveClusterWarnings,\n} from './dtos/ClusterOwnerMove.dto.js'\nexport type { ClusterPlanDto } from './dtos/ClusterPlan.dto.js'\nexport type { ClusterPlanTypeDto } from './dtos/ClusterPlanType.dto.js'\nexport type {\n ChangeClusterPlanTypeResult,\n ClusterModificationConfigRef,\n ClusterPlanTypeChangeRefusal,\n ClusterPlanTypeStateDto,\n} from './dtos/ClusterPlanTypeChange.dto.js'\nexport {\n CLUSTER_PLAN_TYPE_CHANGE_REFUSALS,\n clusterPlanTypeChangeRefusalOf,\n} from './dtos/ClusterPlanTypeChange.dto.js'\nexport type {\n ClusterSpecChange,\n ClusterSpecChangeActor,\n ClusterSpecHistory,\n} from './dtos/ClusterSpecHistory.dto.js'\nexport type {\n CommonClusterDto,\n ExternalIdpConfig,\n OptimizeFilteringConfig,\n OptimizeFilteringIncludeExclude,\n OptimizeFilteringPatch,\n SecretsFilterMode,\n ZeebeRebalancingSetting,\n} from './dtos/CommonCluster.dto.js'\nexport type { ConsoleClusterDto } from './dtos/ConsoleCluster.dto.js'\nexport type {\n ClusterActivityBucket,\n ClusterActivityTile,\n ClusterActivityV2Dto,\n ClusterActivityV2Response,\n ClusterByClientV2Dto,\n ClusterDatacenterOptionV2Dto,\n ClusterDetailV2Dto,\n ClusterFacetsV2Dto,\n ClusterListItemV2Dto,\n ClusterLiveStateV2Dto,\n ClusterLiveStateV2Entry,\n ClusterModificationState,\n ClusterParameterOptionV2Dto,\n ClusterParametersV2Dto,\n ClusterTtlFilter,\n ControlResolvedPermissions,\n ControlSessionDto,\n ControlSessionUser,\n CursorPage,\n CursorParams,\n ListClustersV2Params,\n ListOrganizationsV2Params,\n ListOrgMembersV2Params,\n OrgDetailV2Dto,\n OrgListItemV2Dto,\n OrgMemberV2Dto,\n OrgSummaryV2Dto,\n} from './dtos/ControlV2.dto.js'\nexport { CLUSTER_MODIFICATION_STATES } from './dtos/ControlV2.dto.js'\nexport type {\n DashboardActor,\n DashboardAnnotationsQuery,\n DashboardAnnotationsTile,\n DashboardAnnotationsTileV1,\n DashboardCatalogue,\n DashboardCatalogueChartMetric,\n DashboardCatalogueSearchField,\n DashboardChartQuery,\n DashboardChartRender,\n DashboardChartTile,\n DashboardChartTileV3,\n DashboardClusterCard,\n DashboardClusterDetailQuery,\n DashboardClusterDetailTile,\n DashboardClusterDetailTileV2,\n DashboardDefinition,\n DashboardDefinitionV1,\n DashboardDefinitionV2,\n DashboardDefinitionV3,\n DashboardDto,\n DashboardFleetQuery,\n DashboardFleetQueryTile,\n DashboardFleetQueryTileV1,\n DashboardHeadingTile,\n DashboardHeadingTileV2,\n DashboardLinkTile,\n DashboardLinkTileV2,\n DashboardListDto,\n DashboardNewTile,\n DashboardNoteTile,\n DashboardNoteTileV2,\n DashboardOrgCard,\n DashboardOrgDetailQuery,\n DashboardOrgDetailTile,\n DashboardOrgDetailTileV2,\n DashboardSummaryDto,\n DashboardTile,\n DashboardTileKind,\n DashboardTileLayout,\n DashboardTileV1,\n DashboardTileV2,\n DashboardTileV3,\n StoredDashboardDefinition,\n} from './dtos/Dashboard.dto.js'\nexport {\n DASHBOARD_CHART_RENDERS,\n DASHBOARD_CLUSTER_CARDS,\n DASHBOARD_DEFINITION_BYTES_MAX,\n DASHBOARD_DEFINITION_VERSION,\n DASHBOARD_ENTITY_ID_MAX,\n DASHBOARD_GRID_COLUMNS,\n DASHBOARD_GRID_ROWS_MAX,\n DASHBOARD_LINK_URL_MAX,\n DASHBOARD_NOTE_MAX,\n DASHBOARD_ORG_CARDS,\n DASHBOARD_PAGE_SIZE_DEFAULT,\n DASHBOARD_PAGE_SIZE_MAX,\n DASHBOARD_TILE_KINDS,\n DASHBOARD_TILE_ROWS_MAX,\n DASHBOARD_TILES_MAX,\n DASHBOARD_TITLE_MAX,\n} from './dtos/Dashboard.dto.js'\nexport type { EarlyAccessFeatureDto } from './dtos/EarlyAccessFeature.dto.js'\nexport type {\n CamundaWebApp,\n CamundaWebAppWithZeebe,\n ExternalClickwrapConfigDto,\n ExternalClusterDto,\n ExternalOrganizationDto,\n} from './dtos/ExternalWebapp.dto.js'\nexport type {\n CreateFeatureFlagDto,\n FeatureFlagAnswer,\n FeatureFlagDto,\n FeatureFlagListDto,\n UpdateFeatureFlagDto,\n} from './dtos/FeatureFlags.dto.js'\nexport type {\n FleetStatRowDto,\n FleetStatsPageDto,\n} from './dtos/FleetStats.dto.js'\nexport type {\n ClusterGenerationStateDto,\n ForceGenerationUpgradeResult,\n} from './dtos/ForceGenerationUpgrade.dto.js'\n// Functions\nexport {\n activeGenerations,\n compareGenerationNamesNewestFirst,\n type GenerationDto,\n type GenerationWithClusterCountDto,\n sortGenerationBySemverOfZeebe,\n type UpgradableGenerationsDto,\n} from './dtos/Generations.dto.js'\nexport type { ChangeGenerationVersionsResult } from './dtos/GenerationVersionsChange.dto.js'\n// Namespace (type-only - contains only interfaces)\nexport type { Hdp } from './dtos/Hdp.dto.js'\nexport type {\n K8sBackupConfig,\n K8sConfig,\n K8sConfigLegacyFormat,\n K8sContext,\n K8sContextDto,\n} from './dtos/K8sContext.dto.js'\nexport type {\n M2mTokenCountDto,\n M2mTokenCountsDto,\n} from './dtos/M2mTokenCount.dto.js'\nexport type { MetaDto } from './dtos/Meta.dto.js'\nexport type {\n AutoJoinAssignment,\n LicensingModelType,\n LlmProviderName,\n OrganizationDto,\n OrganizationMetadata,\n OrgOwner,\n OrgWithNameAndSalesPlan,\n} from './dtos/Organization.dto.js'\nexport {\n LICENSING_MODEL_DISPLAY_NAMES,\n VALID_LICENSING_MODELS,\n} from './dtos/Organization.dto.js'\nexport type { OrganizationMemberDto } from './dtos/OrganizationMember.dto.js'\nexport type { OrganizationToSalesPlanDto } from './dtos/OrganizationToSalesPlan.dto.js'\nexport type {\n DryRunSanityDiff,\n ReleaseTrainPreview,\n ReleaseTrainSanityReport,\n SanityFix,\n SanityRuleInfo,\n SanitySeverity,\n SanityViolation,\n} from './dtos/ReleaseTrainSanity.dto.js'\nexport type { RestoreDto, RestoreState } from './dtos/Restore.dto.js'\n// SalesPlan.dto - Types\nexport type {\n ClusterLimits,\n ConsumptionDataItem,\n Limits,\n SalesPlanDto,\n SalesPlanMetadata,\n} from './dtos/SalesPlan.dto.js'\n// SalesPlan.dto - Values (constants and functions)\nexport {\n allClusterBasedLimits,\n allSalesPlanLimits,\n clusterPlanWhiteListIds,\n deprecatedLimit,\n generationWhiteListIds,\n isLimitKeyEnabled,\n isLimitOfferedOnStage,\n isUnlockedClusterPlansStage,\n MAX_CLUSTER_CLIENTS_DEFAULT,\n MAX_CLUSTER_CLIENTS_DEV,\n RETENTION_LIMIT_DEFAULT,\n RETENTION_LIMIT_MAXIMUM,\n RETENTION_LIMIT_MINIMUM,\n unusedClusterBasedLimits,\n unusedSalesPlanLimits,\n} from './dtos/SalesPlan.dto.js'\nexport type { SecureConnectivityDto } from './dtos/SecureConnectivity.dto.js'\nexport type { SignupDto } from './dtos/Signup.dto.js'\nexport type {\n StorybookConfig,\n StorybookConfigBackup,\n StorybookConfigChannel,\n StorybookConfigDatacenter,\n StorybookConfigGeneration,\n} from './dtos/StorybookConfig.dto.js'\nexport type { SystemAuditDto } from './dtos/SystemAudit.dto.js'\nexport type {\n UpgradeReadinessDto,\n UpgradeReadinessSource,\n UpgradeReadinessState,\n} from './dtos/UpgradeReadiness.dto.js'\n// UsageAlert.dto - Types\nexport type { UsageAlertDto } from './dtos/UsageAlert.dto.js'\n// UsageAlert.dto - Values (enum and constants)\nexport {\n UsageAlertInitValues,\n UsageAlertMetric,\n UsageAlertThresholdLimits,\n} from './dtos/UsageAlert.dto.js'\nexport type { UserMetaDataDto } from './dtos/UserMetaData.dto.js'\n// Lucene-style table search (parser + AST \u2192 SQL compiler + field registries).\nexport {\n type AndNode,\n CLUSTER_DEFAULT_SEARCH_FIELDS,\n CLUSTER_SEARCH_FIELDS,\n CLUSTER_TTL_SEARCH_FIELDS,\n type CompileContext,\n type CompiledQuery,\n clusterSearchFieldsForStage,\n compileQuery,\n type FieldBinding,\n findSearchField,\n idSetPredicate,\n isLuceneQueryError,\n joinIdSet,\n LuceneQueryError,\n likeArgument,\n type NotNode,\n ORG_DEFAULT_SEARCH_FIELDS,\n ORGANIZATION_SEARCH_FIELDS,\n type OrNode,\n parseLuceneQuery,\n type QueryNode,\n type RangeNode,\n type SearchFieldCapability,\n type SearchFieldSpec,\n type SearchFieldType,\n type SearchTermOperator,\n type SqlDialect,\n type TermNode,\n} from './search/index.js'\nexport { upgradeGateReason } from './utils/upgradeGateReason.utils.js'\n\n// ============================================================================\n// Enums (runtime values)\n// ============================================================================\n\nexport {\n AlertSubscriptionReportType,\n AlertSubscriptionType,\n} from './enums/AlertSubscription.enum.js'\nexport { AuditEntity, AuditEntityAttribute } from './enums/AuditEntity.enum.js'\nexport { AuditService } from './enums/AuditService.enum.js'\nexport { BackupStatus } from './enums/BackupStatus.enum.js'\nexport {\n ClusterBulkOperationStatus,\n ClusterBulkOperationType,\n} from './enums/ClusterBulkOperation.enum.js'\nexport { ClusterClientPermission } from './enums/ClusterClientPermissions.enum.js'\nexport { ClusterEncryptionKey } from './enums/ClusterEncryptionKey.enum.js'\nexport { ClusterStatus } from './enums/ClusterStatus.enum.js'\nexport { ConsoleAPIClientPermission } from './enums/ConsoleApiClientPermission.enum.js'\nexport { ErrorType } from './enums/ErrorType.enum.js'\nexport type {\n AssignableOrganizationRoleType,\n OrganizationRoleType,\n UnassignableOrganizationRoleType,\n} from './enums/OrganizationRole.enum.js'\nexport {\n AssignableOrganizationRole,\n LegacyHeldOrganizationRole,\n OrganizationRole,\n UnassignableOrganizationRole,\n} from './enums/OrganizationRole.enum.js'\nexport { SseEntity, SseType } from './enums/Sse.enum.js'\nexport {\n SystemAuditEntity,\n SystemAuditEntityAttribute,\n} from './enums/SystemAuditEntity.enum.js'\n\n// ============================================================================\n// Permissions - Namespaces (runtime values)\n// ============================================================================\n\nexport { AccountsPermissions } from './permissions/accounts.permissions.js'\nexport { AlertDistributorPermissions } from './permissions/alert-distributor.permissions.js'\nexport { AuditLoggerPermissions } from './permissions/auditlogger.permissions.js'\nexport {\n accountsUserFeaturesFromPermissions,\n consoleUserFeaturesFromPermissions,\n sessionHasPermission,\n sessionPermissionKeysFor,\n} from './permissions/combo.js'\nexport { ConsolePermissions } from './permissions/console.permissions.js'\nexport { NotificationPermissions } from './permissions/notification.permissions.js'\n// profile.permissions - Types\nexport type { OnboardConfig } from './permissions/profile.permissions.js'\n// profile.permissions - Values (constants)\n// NOTE: the `allowed` email lists (CLOUD_TEAM_EMAILS, SRE_TEAM_EMAILS, etc.)\n// intentionally live in the private `@camunda-cloud/shared-backend` package\n// instead of here, since this package is published publicly to npm.\nexport { PROFILES } from './permissions/profile.permissions.js'\nexport {\n ALL_PERMISSIONS_AT_AUTH0,\n expandRolesToPermissions,\n} from './permissions/roleExpansion.utils.js'\n\n// ============================================================================\n// Types - Type-only exports (interfaces and type aliases)\n// ============================================================================\n\nexport type { AuditData } from './types/AuditData.type.js'\n// AutoSleep.type - Types\nexport type {\n ActivitySleepEligibilityOptions,\n SleepCronEligibilityOptions,\n} from './types/AutoSleep.type.js'\n// AutoSleep.type - Values (constants and functions)\nexport {\n INTERNAL_LOW_HARDWARE_PLAN_NAME,\n isActivitySleepEligible,\n isClusterTagEligibleForSleepCron,\n isSalesPlanEligibleForSleepCron,\n isSleepCronEligible,\n SLEEP_CRON_ELIGIBLE_TAGS,\n} from './types/AutoSleep.type.js'\nexport type {\n BotContext,\n BotOptions,\n BotRequest,\n GetUserDetailsResponse,\n ListRolesForUserResponse,\n UpdateUserRolesRequest,\n UpdateUserRolesResponse,\n UserContext,\n UserDetails,\n} from './types/Bot.types.js'\n// BulkOperation.type - Types\nexport type {\n BulkClusterDeletionContent,\n BulkClusterDeletionItem,\n BulkClusterGenerationUpdateItem,\n BulkClusterPlanTypeUpdateContent,\n BulkClusterPlanTypeUpdateItem,\n BulkClusterPlanUpdateContent,\n BulkClusterPlanUpdateItem,\n BulkGenerationUpdateContent,\n GenericBulkClusterOperationContent,\n GenericBulkOperationContent,\n GenericClusterBulkOperationItem,\n} from './types/BulkOperation.type.js'\n// BulkOperation.type - Functions (type guards)\nexport {\n isBulkClusterDeletionItem,\n isBulkClusterPlanTypeUpdateItem,\n isBulkClusterPlanUpdateItem,\n isIsBulkClusterGenerationUpdateIten,\n} from './types/BulkOperation.type.js'\n// C8ClusterComponentVersions.type - Types\nexport type {\n GenerationEnvVarsDto,\n GenerationEnvVarsKey,\n GenerationImageVersionsDto,\n ImmutableZeebeClusterVersionsDto,\n MutableZeebeClusterVersionsDto,\n ZeebeClusterVersionsDto,\n} from './types/C8ClusterComponentVersions.type.js'\n// C8ClusterComponentVersions.type - Values (constants)\nexport {\n AllThings,\n GENERATION_ENV_VARS_KEYS,\n GENERATION_IMAGE_VERSION_KEYS,\n ImmutableThings,\n MutableThings,\n} from './types/C8ClusterComponentVersions.type.js'\n// CamundaClusterLabels.type - Types\nexport type {\n CamundaClusterStage,\n CamundaClusterStageLabel,\n ClusterLabels,\n} from './types/CamundaClusterLabels.type.js'\n// CamundaClusterLabels.type - Values (constants)\nexport {\n ALLOWED_CAMUNDA_LABELS,\n StageClusterLabels,\n} from './types/CamundaClusterLabels.type.js'\n// Chargebee.type - Types\nexport type { SubscriptionItem } from './types/Chargebee.type.js'\n// Chargebee.type - Values (enums)\nexport { ConsumptionData, ConsumptionDataType } from './types/Chargebee.type.js'\n// ClusterBulkOperation.type - Types\nexport type {\n ClusterBulkOperationAck,\n ClusterBulkOperationClusterDto,\n ClusterBulkOperationContent,\n ClusterBulkOperationDto,\n ClusterBulkOperationGenerationUpdateParameter,\n ClusterBulkOperationParameter,\n ClusterBulkOperationPlanTypeUpdateParameter,\n ClusterBulkOperationPlanUpdateParameter,\n ClusterBulkOperationPostContent,\n ClusterSleepWakeupParameter,\n} from './types/ClusterBulkOperation.type.js'\nexport type {\n ClusterModificationConfigDto,\n ClusterModificationDto,\n} from './types/ClusterModification.type.js'\n// ClusterPlanFields.type - Values (field spec and type guard)\nexport {\n CLUSTER_PLAN_FIELDS,\n type ClusterPlanFieldSpec,\n type ClusterPlanFieldTree,\n isClusterPlanFieldSpec,\n} from './types/ClusterPlanFields.type.js'\nexport type {\n ClusterPlanModificationAck,\n ClusterPlanModificationConfig,\n ClusterPlanModificationDto,\n} from './types/ClusterPlanModification.type.js'\n// ClusterPlanTypeAvailabilityClass.type - Values (enum and function)\nexport {\n ClusterPlanTypeAvailabilityClass,\n hasNoAvailabilityClass,\n sortByAvailabilityClasses,\n} from './types/ClusterPlanTypeAvailabilityClass.type.js'\n// ClusterPlanTypeCategory.type - Values (enum and functions)\nexport {\n ClusterPlanTypeCategory,\n hasAvailabilityClass,\n sortByClusterPlanTypeCategory,\n} from './types/ClusterPlanTypeCategory.type.js'\nexport type { ClusterPlanTypesToConfig } from './types/ClusterPlanTypesToConfig.type.js'\nexport type { ClusterPlanTypesToReserved } from './types/ClusterPlanTypesToReserved.type.js'\nexport type {\n ClusterTtlDeletionPayload,\n ClusterTtlDeletionResult,\n ClusterTtlDto,\n ClusterTtlDuration,\n ClusterTtlOption,\n ClusterTtlUnlimited,\n UpdateClusterTtlBody,\n} from './types/ClusterTtl.type.js'\nexport {\n CLUSTER_TTL_BACKFILL_REASON,\n CLUSTER_TTL_DURATION_MS,\n CLUSTER_TTL_DURATIONS,\n CLUSTER_TTL_FEATURE_FLAG,\n CLUSTER_TTL_OPTIONS,\n CLUSTER_TTL_UNLIMITED_LINK_MAX_LENGTH,\n CLUSTER_TTL_UNLIMITED_REASON_MAX_LENGTH,\n clusterTtlExpiresAt,\n DEFAULT_CLUSTER_TTL_OPTION,\n extendClusterTtl,\n isClusterTtlDuration,\n isClusterTtlOption,\n isClusterTtlStage,\n isHttpUrl,\n isPastClusterTtl,\n validateClusterTtlUnlimited,\n} from './types/ClusterTtl.type.js'\nexport type {\n ClusterUsageDataRequest,\n ClusterUsageMetadataDto,\n ClusterUsageMetricsAddRequestByMetricHeap,\n ClusterUsageMetricsData,\n ClusterUsageMetricsFilter,\n ClusterUsageOrgStartDate,\n} from './types/ClusterUsageMetrics.type.js'\n// Dashboard.types - Types\nexport type {\n DashboardConfig,\n DashboardMappingItem,\n DashboardMappingTarget,\n DashboardResultPrimitive,\n DashboardResultRow,\n EngineeringOperationsDashboardResponse,\n} from './types/Dashboard.types.js'\nexport type { EnterpriseIncludingValueMetrics } from './types/EnterpriseIncludingValueMetrics.type.js'\nexport type {\n HdpTenantUsageBreakdown,\n HdpTenantUsagePerClusterPoint,\n HdpTenantUsagePoint,\n} from './types/HdpTenantUsage.type.js'\n// hdp.types - Types (interfaces)\nexport type {\n AlertSubscription as HdpAlertSubscription,\n ByomClient as HdpByomClient,\n Channel as HdpChannel,\n Cluster as HdpCluster,\n ClusterBackup as HdpClusterBackup,\n ClusterBackupSchedule as HdpClusterBackupSchedule,\n ClusterBulkOperation as HdpClusterBulkOperation,\n ClusterClient as HdpClusterClient,\n ClusterModification as HdpClusterModification,\n ClusterPlan as HdpClusterPlan,\n ClusterPlanType as HdpClusterPlanType,\n ConnectorSecret as HdpConnectorSecret,\n ConsoleApiClient as HdpConsoleApiClient,\n Datacenter as HdpDatacenter,\n Generation as HdpGeneration,\n HdpBackendChangeEvent,\n HdpClusterModificationConfig,\n HdpDisk,\n HdpEntity,\n HdpPrometheusDataCapacityDataPoint,\n Invite as HdpInvite,\n LlmSpend as HdpLlmSpend,\n Organization as HdpOrganization,\n SecureConnectivity as HdpSecureConnectivity,\n SystemAudit as HdpSystemAudit,\n TelemetryData as HdpTelemetryData,\n UsageAlert as HdpUsageAlert,\n User as HdpUser,\n UserLogin as HdpUserLogin,\n} from './types/hdp.types.js'\n// hdp.types - Values (enums)\nexport {\n AlertSubscriptionReportType as HdpAlertSubscriptionReportType,\n AlertSubscriptionType as HdpAlertSubscriptionType,\n HDP_DISKS,\n} from './types/hdp.types.js'\n// notification.type - Types\nexport type {\n GlobalNotification,\n NotificationDto,\n NotificationMeta,\n NotificationOptions,\n NotificationPermission,\n NotificationSource,\n NotificationState,\n NotificationType,\n OrgNotification,\n UserNotification,\n UserOrgNotification,\n} from './types/notification.type.js'\n// notification.type - Values (enums and constants)\nexport {\n NotificationPermissionValues,\n NotificationSourceEnum,\n NotificationStateEnum,\n NotificationTypeEnum,\n} from './types/notification.type.js'\n// OrganizationPermission.type - Types\nexport type {\n CreateReadUpdateDelete,\n OrganizationPermissions,\n} from './types/OrganizationPermission.type.js'\n// OrganizationPermission.type - Values (constants)\nexport {\n OrganizationPermissionsDescriptions,\n PermissionsForOrganizationRole,\n} from './types/OrganizationPermission.type.js'\nexport {\n getPreprodClusterTtlHours,\n isPastPreprodClusterTtl,\n isPreprodClusterTtlStage,\n parseNumericLimit,\n} from './types/PreprodClusterTtl.type.js'\n// Roles.js - Types\nexport type {\n AccountRoles,\n ConsoleRoles,\n ModelerRoles,\n Roles,\n} from './types/Roles.js'\n// Roles.js - Values (constants)\nexport { SAFE_ROLES } from './types/Roles.js'\n// SalesPlanType.type - Types\nexport type {\n DisplayedSalesPlan,\n RevisitedSalesPlanName,\n} from './types/SalesPlanType.type.js'\n// SalesPlanType.type - Values (enums and functions)\nexport {\n AnalyticsSalesPlanType,\n getAnalyticsSalesPlanFromOrgSalesPlan,\n getDisplayedSalesPlan,\n getRevisitedSalesPlanName,\n OPTIMIZE_DISABLED_PLAN_TYPES,\n SalesPlanType,\n USAGE_SALES_PLAN_TYPES,\n} from './types/SalesPlanType.type.js'\n// SpamDetection.type - Types\nexport type { SpamDetectionPatterns } from './types/SpamDetection.type.js'\n// SpamDetection.type - Values (constants)\nexport { TEERGRUBE_PATTERNS } from './types/SpamDetection.type.js'\nexport type {\n AlertSubscriptionSseEvent,\n BackupSseEvent,\n ClusterClientSseEvent,\n ClusterSseEvent,\n ConnectorSecretsSseEvent,\n ConsoleApiClientSseEvent,\n ConsoleSseEvent,\n MonitoringSseEvent,\n SecureConnectivitySseEvent,\n SseClusterPayload,\n SseMonitoringPayload,\n SseSecureConnectivityPayload,\n} from './types/SseEvent.type.js'\n// Namespace (type-only - contains only interfaces)\nexport type { AccountsStats } from './types/Stats.types.js'\n// Survey.type - Types\nexport type { Persona, SurveyDto } from './types/Survey.type.js'\n// Survey.type - Values (enum)\nexport { FeedbackType } from './types/Survey.type.js'\n// SuspendStrategy.type - Types\nexport type {\n GetSuspendStrategyOptions,\n SuspendStrategy,\n} from './types/SuspendStrategy.type.js'\n// SuspendStrategy.type - Values (function)\nexport { getSuspendStrategy } from './types/SuspendStrategy.type.js'\nexport type { SystemAuditData } from './types/SystemAuditData.type.js'\n\n// Namespace (runtime value)\nexport { Telemetry } from './types/Telemetry.type.js'\n\n// TrialManagement.types - Types\nexport type {\n ExtensionListItem,\n ExtensionListResponse,\n OrgTrialDetail,\n TrialExtensionSource,\n TrialManagementStats,\n} from './types/TrialManagement.types.js'\n\n// User.type - Types\nexport type {\n AccountsData,\n AppMetadata,\n BasicUser,\n BlockedFor,\n Identity,\n OrgMembership,\n User,\n UserMetadata,\n UserRequest,\n} from './types/User.type.js'\n\n// User.type - Values (enum)\nexport { UserMetadataEvent } from './types/User.type.js'\n\nexport type {\n UniqueTaskUser,\n ValueMetrics,\n ValueMetricsPerYearMonth,\n} from './types/ValueMetrics.type.js'\n\n// ============================================================================\n// Utils - Classes (runtime values)\n// ============================================================================\n\nexport {\n CLOUD_PROVIDER_ORDER,\n getCloudProviderLabel,\n getCloudProviderRank,\n} from './utils/cloudProvider.utils.js'\nexport {\n type ConnectivityStatus,\n deriveConnectivityMessage,\n deriveConnectivityStatus,\n} from './utils/connectivityStatus.utils.js'\nexport type {\n CronScheduleValidationFailure,\n CronScheduleValidationResult,\n CronScheduleValidationSuccess,\n} from './utils/cronSchedule.utils.js'\nexport {\n BACKUP_SCHEDULE_MIN_INTERVAL_MINUTES,\n validateCronSchedule,\n} from './utils/cronSchedule.utils.js'\nexport {\n canonicalPlan,\n canonicalPlanKey,\n canonicalPlanModifications,\n} from './utils/elasticsearchPlanPath.utils.js'\nexport {\n deriveEncryptionStatus,\n type EncryptionStatus,\n isEncryptionStatus,\n} from './utils/encryptionStatus.utils.js'\n// enterprise-connection.utils - Types\nexport type { EnterpriseConnectionOrganizationAssignment } from './utils/enterprise-connection.utils.js'\n// enterprise-connection.utils - Values (functions)\nexport {\n enterpriseConnectionMetadataToOrganizationAssignments,\n organizationAssignmentsToEnterpriseConnectionMetadata,\n} from './utils/enterprise-connection.utils.js'\nexport {\n addMonthsClamped,\n DEFAULT_ENTERPRISE_DURATION_IN_MONTHS,\n diffInWholeMonths,\n type EnterpriseTermWindow,\n getCurrentEnterpriseTerm,\n peakWithinTerm,\n toUtcDayStartMs,\n} from './utils/enterpriseTerm.utils.js'\nexport type { EnvVarEntry } from './utils/envVars.js'\nexport { parseEnvVars, serializeEnvVars } from './utils/envVars.js'\nexport {\n deriveFailoverKeyPolicyPrincipals,\n type FailoverKeyPolicyPrincipals,\n} from './utils/failoverKeyPolicy.utils.js'\nexport type {\n JvmOptionsModificationKey,\n ParsedJvmOption,\n} from './utils/jvmOptions.js'\nexport {\n addsEnvVarsOverrideValue,\n isJvmOptionsModificationKey,\n isUnderJvmSpec,\n isValidJvmOptionsPlanValue,\n JVM_OPTION_MAX_LENGTH,\n JVM_OPTION_PATTERN,\n JVM_OPTIONS_MAX_ITEMS,\n JVM_OPTIONS_MODIFICATION_KEYS,\n JVM_OPTIONS_TARGETS,\n joinJvmOptions,\n jvmOptionsOfPlanValue,\n parseJvmOption,\n requiresEnvVarsOverride,\n splitJvmOptions,\n validateJvmOptions,\n validateJvmOptionsPlanValue,\n validateJvmOptionsValue,\n} from './utils/jvmOptions.js'\nexport {\n KMS_ARN,\n KMS_MRK_ARN,\n type KmsArnValidationError,\n type ParsedKmsArn,\n parseKmsArn,\n validateKmsArnForRegion,\n} from './utils/kmsArn.utils.js'\nexport { validateLabels } from './utils/labelValidator.utils.js'\nexport { ObjectMergeUtils } from './utils/objectMerge.utils.js'\nexport { getAtPath } from './utils/objectPath.utils.js'\nexport {\n computeOrgStartDate,\n type OrgStartDateInput,\n} from './utils/orgStartDate.utils.js'\nexport {\n getPermissionsByRoles,\n getUserPermissionsForOrg,\n} from './utils/orgs/OrgHelper.js'\n\n// PasswordPolicy - Types\nexport type {\n PasswordPolicyRequest,\n PasswordPolicyResult,\n} from './utils/PasswordPolicy.js'\n\n// PasswordPolicy - Values (constants and function)\nexport {\n MAXLENGTH as PASSWORD_POLICY_MAXLENGTH,\n MINLENGTH as PASSWORD_POLICY_MINLENGTH,\n passwordPolicyCheck,\n} from './utils/PasswordPolicy.js'\nexport { isQaUserEmail, qaUserEmail } from './utils/qa-user.utils.js'\nexport {\n deriveSecondaryStorageStatus,\n type SecondaryStorageStatus,\n} from './utils/secondaryStorageStatus.utils.js'\nexport {\n allSettledResultsCounts,\n getFulfilledPromises,\n getRejectedPromises,\n getSettledSummary,\n} from './utils/settledPromises.util.js'\nexport {\n isValidAwsArn,\n isValidCIDR,\n isValidCIDRList,\n isValidClientName,\n isValidHostname,\n isValidPrivateLinkRegion,\n normalizeCIDRList,\n} from './utils/string-validation.utils.js'\nexport {\n extractCamundaUserEmail,\n guessName,\n isCamundaUserId,\n} from './utils/user.utils.js'\n\n// versionCheck.utils - Values (enum and function)\nexport {\n checkVersion,\n generationImageErrorMessage,\n isAppIntegrationsVersionSupported,\n isGenerationResumable,\n isSecretsFilterModeConfigurable,\n isValidGenerationImage,\n normalizeGenerationVersion,\n stripSecfixPostfix,\n VersionCheckOperator,\n} from './utils/versionCheck.utils.js'\nexport type { ZeebeRebalancingValidationErrors } from './utils/zeebeRebalancing.utils.js'\nexport {\n validateZeebeRebalancing,\n ZEEBE_REBALANCING_FEATURE_FLAG,\n} from './utils/zeebeRebalancing.utils.js'\n\n// ============================================================================\n// Config - Configuration files and types\n// ============================================================================\n\nexport { default as CAMUNDI_PERMISSION_RULES } from './config/camundi-permission-rules.js'\nexport type { CamundiPermissionRules } from './config/camundi-permission-rules.types.js'\n\nexport {\n augmentCamundiPermissions,\n getApplicableRolesForEmployee,\n HIBOB_CACHE_KEY,\n HIBOB_CACHE_NAMESPACE,\n isManager,\n} from './utils/camundiPermissionAugmenter.utils.js'\n"],
|
|
5
|
+
"mappings": "AAUA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP,SAAS,KAAK,MAAM,QAAQ,QAAQ,YAAY;AAEhD;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP,SAAS,4BAA4B;AACrC,SAAS,iDAAiD;AAC1D,SAAS,6CAA6C;AAKtD,SAAS,wCAAwC;AACjD;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AA4BP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AASP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAKP;AAAA,EACE;AAAA,EACA;AAAA,OACK;AAMP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAeP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAOP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP;AAAA,EACE;AAAA,EACA;AAAA,OACK;AAEP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAEP;AAAA,EACE;AAAA,EACA;AAAA,OACK;AAMP,SAAS,mDAAmD;AAM5D;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAOP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAEP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAMA;AAAA,EASA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAIP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAWP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAWP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAyBP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAgBP,SAAS,uCAAuC;AAkBhD;AAAA,EACE;AAAA,EACA;AAAA,OACK;AA6CP,SAAS,mCAAmC;AA8C5C;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AA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",
|
|
6
6
|
"names": ["AlertSubscriptionReportType", "AlertSubscriptionType", "default"]
|
|
7
7
|
}
|
|
@@ -35,6 +35,9 @@ export declare namespace AccountsPermissions {
|
|
|
35
35
|
const MODIFY_CLUSTER_PLAN_TYPE_RESERVATIONS = "acpm";
|
|
36
36
|
const M2M_SALESPLAN_GET = "amsg";
|
|
37
37
|
const M2M_SALESPLAN_SWITCH = "amss";
|
|
38
|
+
const M2M_ORG_LIST = "amol";
|
|
39
|
+
const M2M_FLEET_HOSTING_COST_GET = "amhc";
|
|
40
|
+
const M2M_ACTIVE_USERS_GET = "amau";
|
|
38
41
|
const ENTERPRISE_ORG_CONVERT = "aeoc";
|
|
39
42
|
const ENTERPRISE_ORG_MODIFY = "aeom";
|
|
40
43
|
const ENTERPRISE_ORG_MODIFY_START_DATE = "aeos";
|
|
@@ -163,6 +166,12 @@ export declare namespace AccountsPermissions {
|
|
|
163
166
|
get: boolean;
|
|
164
167
|
switch: boolean;
|
|
165
168
|
};
|
|
169
|
+
/** `GET /api/organizations`. See `M2M_ORG_LIST`. */
|
|
170
|
+
orgList: boolean;
|
|
171
|
+
/** `GET /api/hdp/hosting-cost`. See `M2M_FLEET_HOSTING_COST_GET`. */
|
|
172
|
+
fleetHostingCost: boolean;
|
|
173
|
+
/** `GET /api/logs/active-users`. See `M2M_ACTIVE_USERS_GET`. */
|
|
174
|
+
activeUsers: boolean;
|
|
166
175
|
fetchMigrationData: boolean;
|
|
167
176
|
/** Every route of `api/admin/approvals`. See `M2M_CONTROL_APPROVALS`. */
|
|
168
177
|
approvals: boolean;
|
|
@@ -29,6 +29,9 @@ var AccountsPermissions;
|
|
|
29
29
|
AccountsPermissions2.MODIFY_CLUSTER_PLAN_TYPE_RESERVATIONS = "acpm";
|
|
30
30
|
AccountsPermissions2.M2M_SALESPLAN_GET = "amsg";
|
|
31
31
|
AccountsPermissions2.M2M_SALESPLAN_SWITCH = "amss";
|
|
32
|
+
AccountsPermissions2.M2M_ORG_LIST = "amol";
|
|
33
|
+
AccountsPermissions2.M2M_FLEET_HOSTING_COST_GET = "amhc";
|
|
34
|
+
AccountsPermissions2.M2M_ACTIVE_USERS_GET = "amau";
|
|
32
35
|
AccountsPermissions2.ENTERPRISE_ORG_CONVERT = "aeoc";
|
|
33
36
|
AccountsPermissions2.ENTERPRISE_ORG_MODIFY = "aeom";
|
|
34
37
|
AccountsPermissions2.ENTERPRISE_ORG_MODIFY_START_DATE = "aeos";
|
|
@@ -130,6 +133,9 @@ var AccountsPermissions;
|
|
|
130
133
|
get: false,
|
|
131
134
|
switch: false
|
|
132
135
|
},
|
|
136
|
+
orgList: false,
|
|
137
|
+
fleetHostingCost: false,
|
|
138
|
+
activeUsers: false,
|
|
133
139
|
fetchMigrationData: false,
|
|
134
140
|
approvals: false
|
|
135
141
|
},
|
|
@@ -395,6 +401,21 @@ var AccountsPermissions;
|
|
|
395
401
|
description: "m2m can switch salesplans",
|
|
396
402
|
initialRoles: []
|
|
397
403
|
},
|
|
404
|
+
{
|
|
405
|
+
value: AccountsPermissions2.M2M_ORG_LIST,
|
|
406
|
+
description: "m2m can list all orgs (GET /api/organizations)",
|
|
407
|
+
initialRoles: []
|
|
408
|
+
},
|
|
409
|
+
{
|
|
410
|
+
value: AccountsPermissions2.M2M_FLEET_HOSTING_COST_GET,
|
|
411
|
+
description: "m2m can read the hosting cost of all clusters (GET /api/hdp/hosting-cost)",
|
|
412
|
+
initialRoles: []
|
|
413
|
+
},
|
|
414
|
+
{
|
|
415
|
+
value: AccountsPermissions2.M2M_ACTIVE_USERS_GET,
|
|
416
|
+
description: "m2m can read the count of active users (GET /api/logs/active-users)",
|
|
417
|
+
initialRoles: []
|
|
418
|
+
},
|
|
398
419
|
{
|
|
399
420
|
value: AccountsPermissions2.ENTERPRISE_ORG_CONVERT,
|
|
400
421
|
description: "can convert orgs to enterprise plans",
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/permissions/accounts.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 namespace AccountsPermissions {\n export const READ_ALL = 'aara'\n export const CREATE_ORG = 'aaco'\n export const CHANGE_ORG_NAME = 'aacn'\n export const DELETE_ORG = 'aado'\n export const RESET_TOKEN_VERIFICATION = 'aart'\n export const DELETE_USER = 'aadu'\n export const DELETE_NOT_ACTIVATED_USER = 'aadn'\n export const ADD_TO_ORG = 'aaao'\n export const REMOVE_FROM_ORG = 'aaro'\n /**\n * May open and approve a request of Camunda Control that removes an org\n * member, an owner included, and that can name a new owner. The request\n * needs a second Camundi, so this goes to a wider group than\n * `REMOVE_FROM_ORG`, which acts with no approval.\n */\n export const REMOVE_FROM_ORG_WITH_APPROVAL = 'aarw'\n export const SET_DEFAULT_ORG = 'aasd'\n export const CANCEL_INVITE = 'aaci'\n export const CHANGE_ROLE = 'aacr'\n export const CHANGE_SAFE_ROLE = 'aacs'\n // The org roles of a member of any organization. `CHANGE_ROLE` and\n // `CHANGE_SAFE_ROLE` are for the platform roles.\n export const CHANGE_ORG_MEMBER_ROLE = 'aacm'\n export const EXTEND_TRIAL = 'aaet'\n export const INVALIDATE_TOKEN = 'aait'\n export const SALES_PLAN_CREATE = 'asc'\n export const SALES_PLAN_MODIFY = 'asm'\n export const SALES_PLAN_FORCE_MODIFY = 'asfm'\n export const SALES_PLAN_SWITCH = 'ass'\n export const SALES_PLAN_DELETE = 'asd'\n export const SALES_PLAN_DELETE_AS_GOD = 'asdg'\n export const SUPPORT_AGENT_REMOVE_AGENTS_FROM_ORG = 'asar'\n export const SUPPORT_AGENT_SEE_ORG_MEMBERSHIPS = 'asas'\n export const SUPPORT_AGENT_ADD_TO_ORG = 'asaa'\n export const MODIFY_CLUSTER_PLAN_TYPE_RESERVATIONS = 'acpm'\n export const M2M_SALESPLAN_GET = 'amsg'\n export const M2M_SALESPLAN_SWITCH = 'amss'\n\n // The routes of `api/admin/approvals` read `ConsolePermissions.M2M_CONTROL_APPROVALS`,\n // the one m2m permission of control-backend for accounts and console.\n\n export const ENTERPRISE_ORG_CONVERT = 'aeoc'\n\n export const ENTERPRISE_ORG_MODIFY = 'aeom'\n\n export const ENTERPRISE_ORG_MODIFY_START_DATE = 'aeos'\n\n export const TRIAL_TO_IN_NEGOTIATION_CONVERT = 'atin'\n\n export const EXTERNAL_M2M_GET_ORG_MEMBERS = 'amog'\n export const EXTERNAL_M2M_SEARCH_ORGS = 'amos'\n export const EXTERNAL_M2M_QA_ORG_CREATE = 'amqc'\n export const EXTERNAL_M2M_OFFBOARD_CAMUNDI = 'amoc'\n\n export const ORG_MAY_CHANGE_LIMITS = 'alc'\n export const ORG_MAY_CHANGE_GENERATION_WHITELIST = 'algw'\n export const ORG_CANCEL_PAID = 'aacp'\n\n export const ADMIN_SQL = 'aasq'\n\n export const ADMIN_AUTH0_CONNECTIONS_CREATE = 'aa0c'\n export const ADMIN_AUTH0_CONNECTIONS_READ = 'aa0r'\n export const ADMIN_AUTH0_CONNECTIONS_UPDATE = 'aa0u'\n export const ADMIN_AUTH0_CONNECTIONS_DELETE = 'aa0d'\n export const UNBLOCK_USER = 'aaub'\n\n export const ADMIN_CHANGE_EMAIL = 'aace'\n export const ADMIN_CHANGE_USER_NAME = 'aacu'\n\n export const BOT = 'abot'\n\n // OBACHT: NOT THIS ONE\n export const MODELER_DELETE_USER = 'mdu'\n\n export const GOD_CRON = 'gcr'\n export const GOD_SIGNUP_SPAM_PATTERNS = 'gsp'\n export const GOD_PURGE_USERS = 'gpu'\n export const GOD_UPDATE_USER_METADATA = 'gum'\n\n export const ADMIN_EARLY_ACCESS_FEATURES_READ = 'aaer'\n export const ADMIN_EARLY_ACCESS_FEATURES_CREATE = 'aaec'\n export const ADMIN_EARLY_ACCESS_FEATURES_DELETE = 'aaed'\n export const ADMIN_EARLY_ACCESS_FEATURES_UPDATE = 'aaeu'\n export const PDF_WATERMARK_READ = 'awmr'\n export const PDF_WATERMARK_WRITE = 'awmw'\n export const ROLE_SUPPORT_AGENT = 'support:agent'\n export const FORCE_SALES_PLAN_ON_ORG = 'aafs'\n\n /**\n * May create, edit and delete a feature flag on the page of Camunda Control.\n *\n * A row of the table of control-backend is the value of the flag on its\n * stage, and no approval stands in front of a write. Reading the rows takes\n * `READ_ALL`. Do not reuse `acfo`: it still exists at Auth0 with the meaning\n * of the reverted override design.\n */\n export const ADMIN_FEATURE_FLAGS_WRITE = 'aafw'\n\n /**\n * May open a `change-feature-flag` or `disable-feature-flag` request on int\n * and prod in Camunda Control. It does not approve the request: approval needs\n * `ADMIN_FEATURE_FLAGS_WRITE`, which also opens one. On dev anybody signed\n * in can open a `change-feature-flag` request. A `disable-feature-flag`\n * request runs at once there, and needs `aafw`.\n */\n export const ADMIN_FEATURE_FLAGS_REQUEST = 'aafr'\n\n /**\n * May create, list, rotate and revoke OWN agent tokens in Camunda Control.\n *\n * An agent token reads with the permissions of its creator, cut to the\n * read set of each backend. A creator without `READ_ALL` thus makes a token\n * that can read nothing in control-backend, so this permission goes to the\n * same roles.\n */\n export const CONTROL_AGENT_TOKENS_MANAGE_OWN = 'aato'\n\n /** May list every agent token of the stage, and revoke any of them. */\n export const CONTROL_AGENT_TOKENS_ADMIN = 'aata'\n\n export interface Features {\n admin: {\n readAll: boolean\n createOrg: boolean\n changeOrgName: boolean\n deleteOrg: boolean\n resetTokenVerification: boolean\n deleteUser: boolean\n deleteNotActivatedUser: boolean\n addToOrg: boolean\n removeFromOrg: boolean\n setDefaultOrg: boolean\n cancelInvite: boolean\n changeRole: boolean\n addSafeRole: boolean\n changeOrgMemberRole: boolean\n deleteClusters: boolean\n extendTrial: boolean\n invalidateToken: boolean\n cancelPaid: boolean\n searchForOrgs: boolean\n readAudit: boolean\n modifyClusterPlanTypeReservations: boolean\n mayChangeOrgLimits: boolean\n mayChangeGenerationWhiteList: boolean\n sql: boolean\n modelerDeleteUser: boolean\n unblockUser: boolean\n god: {\n triggerCrons: boolean\n forceSalesPlanOnOrg: boolean\n changeSignupSpamPatterns: boolean\n purgeUsers: boolean\n updateUserMetadata: boolean\n }\n bot: boolean\n changeEmail: boolean\n changeUserName: boolean\n }\n salesPlan: {\n create: boolean\n modify: boolean\n forceModify: boolean\n switch: boolean\n delete: boolean\n godDelete: boolean\n }\n enterprise: {\n org: {\n convert: boolean\n modify: boolean\n modifyStartDate: boolean\n }\n }\n trial: {\n convertToInNegotiation: boolean\n }\n supportAgent: {\n removeAgentsFromOrg: boolean\n seeOrgMemberships: boolean\n addAgentsToOrg: boolean\n }\n m2m: {\n salesplan: {\n get: boolean\n switch: boolean\n }\n\n fetchMigrationData: boolean\n /** Every route of `api/admin/approvals`. See `M2M_CONTROL_APPROVALS`. */\n approvals: boolean\n }\n externalM2m: {\n org: {\n members: {\n get: boolean\n }\n search: boolean\n }\n qa: {\n org: {\n create: boolean\n }\n }\n offboarding: {\n camundi: boolean\n }\n }\n auth0: {\n connections: {\n create: boolean\n read: boolean\n update: boolean\n delete: boolean\n }\n }\n notifications: {\n global: {\n read: boolean\n delete: boolean\n create: boolean\n }\n }\n earlyAccessFeatures: {\n read: boolean\n create: boolean\n delete: boolean\n update: boolean\n }\n pdfWatermark: {\n read: boolean\n write: boolean\n }\n featureFlags: {\n write: boolean\n request: boolean\n }\n agentTokens: {\n manageOwn: boolean\n admin: boolean\n }\n }\n\n export function createEmptyFeatures(): Features {\n return {\n admin: {\n readAll: false,\n createOrg: false,\n changeOrgName: false,\n deleteOrg: false,\n resetTokenVerification: false,\n deleteUser: false,\n deleteNotActivatedUser: false,\n addToOrg: false,\n removeFromOrg: false,\n setDefaultOrg: false,\n cancelInvite: false,\n changeRole: false,\n addSafeRole: false,\n changeOrgMemberRole: false,\n deleteClusters: false,\n extendTrial: false,\n invalidateToken: false,\n cancelPaid: false,\n searchForOrgs: false,\n readAudit: false,\n modifyClusterPlanTypeReservations: false,\n mayChangeOrgLimits: false,\n mayChangeGenerationWhiteList: false,\n sql: false,\n modelerDeleteUser: false,\n unblockUser: false,\n god: {\n triggerCrons: false,\n forceSalesPlanOnOrg: false,\n changeSignupSpamPatterns: false,\n purgeUsers: false,\n updateUserMetadata: false,\n },\n bot: false,\n changeEmail: false,\n changeUserName: false,\n },\n salesPlan: {\n create: false,\n modify: false,\n forceModify: false,\n switch: false,\n delete: false,\n godDelete: false,\n },\n enterprise: {\n org: { convert: false, modify: false, modifyStartDate: false },\n },\n trial: {\n convertToInNegotiation: false,\n },\n supportAgent: {\n removeAgentsFromOrg: false,\n seeOrgMemberships: false,\n addAgentsToOrg: false,\n },\n m2m: {\n salesplan: {\n get: false,\n switch: false,\n },\n fetchMigrationData: false,\n approvals: false,\n },\n externalM2m: {\n org: {\n members: {\n get: false,\n },\n search: false,\n },\n // eslint-disable-next-line id-length\n qa: {\n org: {\n create: false,\n },\n },\n offboarding: {\n camundi: false,\n },\n },\n auth0: {\n connections: {\n create: false,\n read: false,\n update: false,\n delete: false,\n },\n },\n notifications: {\n global: {\n read: false,\n delete: false,\n create: false,\n },\n },\n earlyAccessFeatures: {\n read: false,\n create: false,\n delete: false,\n update: false,\n },\n pdfWatermark: {\n read: false,\n write: false,\n },\n featureFlags: {\n write: false,\n request: false,\n },\n agentTokens: {\n manageOwn: false,\n admin: false,\n },\n }\n }\n\n /**\n * The roles that hold `READ_ALL`. `CONTROL_AGENT_TOKENS_MANAGE_OWN` goes to\n * the same roles, so the two lists cannot drift.\n */\n const READ_ALL_INITIAL_ROLES: Roles[] = [\n 'accounts:read',\n 'accounts:onboard',\n 'accounts:orgCreator',\n 'accounts:admin',\n 'accounts:editSalesPlans',\n 'console:admin',\n 'console:admin:readonly',\n 'support:agent',\n 'supersupport:agent',\n 'accounts:trialExtender',\n 'accounts:limitExtender',\n 'accounts:enterpriseAdmin',\n 'accounts:enterpriseOffboarding',\n 'console:C8ReleaseManager',\n 'console:C8UpdateEnforcer',\n 'accounts:addSafeRoles',\n 'accounts:consultingManager',\n 'accounts:earlyAccessEditor',\n ]\n\n export const PermissionsAtAuth0: Array<{\n value: string\n description: string\n initialRoles: Roles[]\n }> = [\n {\n value: READ_ALL,\n description: 'read access to all orgs and users',\n initialRoles: READ_ALL_INITIAL_ROLES,\n },\n {\n value: CREATE_ORG,\n description: 'can create organisations',\n initialRoles: [\n 'accounts:onboard',\n 'accounts:orgCreator',\n 'accounts:admin',\n 'accounts:enterpriseAdmin',\n ],\n },\n {\n value: CHANGE_ORG_NAME,\n description: 'can change name of organisations',\n initialRoles: [\n 'accounts:admin',\n 'support:agent',\n 'supersupport:agent',\n 'accounts:onboard',\n 'accounts:enterpriseAdmin',\n ],\n },\n {\n value: DELETE_ORG,\n description: 'can delete organisations',\n initialRoles: ['accounts:admin'],\n },\n {\n value: RESET_TOKEN_VERIFICATION,\n description: 'can reset a verification token of a pending user',\n initialRoles: [\n 'accounts:onboard',\n 'accounts:admin',\n 'accounts:enterpriseAdmin',\n ],\n },\n {\n value: DELETE_USER,\n description: 'can delete users',\n initialRoles: ['accounts:god'],\n },\n {\n value: DELETE_NOT_ACTIVATED_USER,\n description: 'can delete users that are not activated yet',\n initialRoles: [\n 'accounts:onboard',\n 'accounts:admin',\n 'accounts:enterpriseAdmin',\n ],\n },\n {\n value: ADD_TO_ORG,\n description: 'can add someone to an org',\n initialRoles: [\n 'accounts:onboard',\n 'accounts:orgCreator',\n 'accounts:admin',\n 'accounts:enterpriseAdmin',\n 'supersupport:agent',\n ],\n },\n {\n value: REMOVE_FROM_ORG,\n description: 'can remove someone from an org',\n initialRoles: [\n 'accounts:admin',\n 'supersupport:agent',\n 'accounts:enterpriseAdmin',\n ],\n },\n {\n value: REMOVE_FROM_ORG_WITH_APPROVAL,\n description:\n 'may open and approve a request that removes an org member, an owner included',\n // The Camundi permission rules give `accounts:orgMemberRemover` to CS.\n initialRoles: ['accounts:admin', 'accounts:orgMemberRemover'],\n },\n {\n value: SET_DEFAULT_ORG,\n description: 'can set an org as default for any user',\n initialRoles: [\n 'support:agent',\n 'supersupport:agent',\n 'accounts:admin',\n 'accounts:enterpriseAdmin',\n 'accounts:onboard',\n ],\n },\n {\n value: CANCEL_INVITE,\n description: 'can cancelpending invites',\n initialRoles: [\n 'accounts:admin',\n 'accounts:onboard',\n 'support:agent',\n 'supersupport:agent',\n 'accounts:enterpriseAdmin',\n ],\n },\n {\n value: CHANGE_ROLE,\n description: 'can change the role of a user',\n // `CHANGE_ROLE` reaches every platform role, also `accounts:admin`, so\n // only `accounts:admin` holds it.\n initialRoles: ['accounts:admin'],\n },\n {\n value: EXTEND_TRIAL,\n description: 'can extend the trial period of an organization',\n initialRoles: [\n 'accounts:admin',\n 'accounts:onboard',\n 'accounts:trialExtender',\n 'accounts:enterpriseAdmin',\n ],\n },\n {\n value: INVALIDATE_TOKEN,\n description: 'can invalidate tokens in TokenIssuer',\n initialRoles: ['accounts:admin'],\n },\n {\n value: SALES_PLAN_CREATE,\n description: 'can create a SalesPlan',\n initialRoles: ['accounts:admin'],\n },\n {\n value: SALES_PLAN_MODIFY,\n description: 'can modify a SalesPlan',\n initialRoles: ['accounts:admin', 'accounts:editSalesPlans'],\n },\n {\n value: SALES_PLAN_FORCE_MODIFY,\n description:\n 'can force modify a SalesPlan without caring about the orgs actual reservations/cluster usage',\n initialRoles: [],\n },\n {\n value: SALES_PLAN_SWITCH,\n description: 'can switch an organization to another SalesPlan',\n initialRoles: [\n 'accounts:admin',\n 'accounts:enterpriseOffboarding',\n 'accounts:consultingManager',\n ],\n },\n {\n value: SALES_PLAN_DELETE,\n description:\n 'can delete a SalesPlan if it is not used by any Organization',\n initialRoles: ['accounts:admin'],\n },\n\n {\n value: SALES_PLAN_DELETE_AS_GOD,\n description: `can delete salesplans even if there is no replacement salesplan for this type. use with great caution`,\n initialRoles: [],\n },\n {\n value: SUPPORT_AGENT_REMOVE_AGENTS_FROM_ORG,\n description: 'can remove support agents from organizations',\n initialRoles: ['support:agent', 'supersupport:agent'],\n },\n {\n value: SUPPORT_AGENT_SEE_ORG_MEMBERSHIPS,\n description: 'can see all org memberships of support agents',\n initialRoles: ['support:agent', 'supersupport:agent'],\n },\n {\n value: SUPPORT_AGENT_ADD_TO_ORG,\n description: 'can add users as support agent to an organization',\n initialRoles: ['support:agent', 'supersupport:agent'],\n },\n {\n value: MODIFY_CLUSTER_PLAN_TYPE_RESERVATIONS,\n description: 'can modify cluster plan type reservations of an org',\n initialRoles: [],\n },\n {\n value: M2M_SALESPLAN_GET,\n description: 'm2m can get salesplans',\n initialRoles: [],\n },\n {\n value: M2M_SALESPLAN_SWITCH,\n description: 'm2m can switch salesplans',\n initialRoles: [],\n },\n {\n value: ENTERPRISE_ORG_CONVERT,\n description: 'can convert orgs to enterprise plans',\n initialRoles: [\n 'accounts:admin',\n 'accounts:onboard',\n 'accounts:enterpriseAdmin',\n ],\n },\n {\n value: ENTERPRISE_ORG_MODIFY,\n description:\n 'can modify value metrics and contract duration of enterprise orgs',\n initialRoles: [\n 'accounts:admin',\n 'accounts:enterpriseAdmin',\n 'accounts:enterpriseOffboarding',\n ],\n },\n {\n value: ENTERPRISE_ORG_MODIFY_START_DATE,\n description: 'can modify start date of enterprise orgs',\n initialRoles: [\n 'accounts:god',\n 'accounts:enterpriseOffboarding',\n 'accounts:admin',\n 'accounts:enterpriseAdmin',\n ],\n },\n {\n value: TRIAL_TO_IN_NEGOTIATION_CONVERT,\n description: 'can convert trial orgs to in-negotiation plans',\n initialRoles: ['accounts:admin', 'accounts:enterpriseAdmin'],\n },\n {\n value: EXTERNAL_M2M_GET_ORG_MEMBERS,\n description: 'external m2m can get all members of all orgs',\n initialRoles: [],\n },\n {\n value: EXTERNAL_M2M_QA_ORG_CREATE,\n description:\n 'external m2m can create orgs, initially add users to org and assign sales plan',\n initialRoles: [],\n },\n {\n value: EXTERNAL_M2M_OFFBOARD_CAMUNDI,\n description:\n 'external m2m can trigger offboarding process for Camunda employees',\n initialRoles: ['accounts:god'],\n },\n {\n value: EXTERNAL_M2M_SEARCH_ORGS,\n description: 'external m2m can search organizations',\n initialRoles: [],\n },\n {\n value: ORG_MAY_CHANGE_LIMITS,\n description: 'may change limits of an organization',\n initialRoles: [\n 'accounts:admin',\n 'accounts:enterpriseAdmin',\n 'accounts:limitExtender',\n ],\n },\n {\n value: ORG_MAY_CHANGE_GENERATION_WHITELIST,\n description: 'may change the generation whitelist of an organization',\n initialRoles: ['accounts:admin', 'accounts:clusterUpdates'],\n },\n {\n value: ORG_CANCEL_PAID,\n description: 'may terminate a running paid organisation',\n initialRoles: ['accounts:admin', 'accounts:enterpriseOffboarding'],\n },\n {\n value: ADMIN_SQL,\n description: 'may query the DB',\n initialRoles: ['accounts:god'],\n },\n {\n value: ADMIN_AUTH0_CONNECTIONS_READ,\n description: 'may read connections from auth0',\n initialRoles: [\n 'accounts:read',\n 'accounts:orgCreator',\n 'support:agent',\n 'supersupport:agent',\n ],\n },\n {\n value: ADMIN_AUTH0_CONNECTIONS_CREATE,\n description: 'may create new connections at auth0',\n initialRoles: ['accounts:connections:create', 'accounts:god'],\n },\n {\n value: ADMIN_AUTH0_CONNECTIONS_UPDATE,\n description: 'may update connections at auth0',\n initialRoles: ['accounts:connections:update', 'accounts:god'],\n },\n {\n value: ADMIN_AUTH0_CONNECTIONS_DELETE,\n description: 'may delete connections at auth0',\n initialRoles: ['accounts:connections:delete', 'accounts:god'],\n },\n {\n value: MODELER_DELETE_USER,\n description: 'can delete a user within the modeler',\n initialRoles: ['modeler:admin'],\n },\n {\n value: UNBLOCK_USER,\n description: 'can unblock a user',\n initialRoles: ['accounts:admin'],\n },\n {\n value: GOD_CRON,\n description: 'can run cron jobs',\n initialRoles: ['consoleTeam'],\n },\n {\n value: GOD_SIGNUP_SPAM_PATTERNS,\n description: 'can read and change signup spam patterns',\n initialRoles: ['consoleTeam', 'accounts:god'],\n },\n {\n value: GOD_PURGE_USERS,\n description: 'can purge user records based on create date / name pattern',\n initialRoles: ['consoleTeam', 'accounts:god'],\n },\n {\n value: GOD_UPDATE_USER_METADATA,\n description: 'can update auth0 user_metadata and app_metadata',\n initialRoles: ['accounts:god'],\n },\n {\n value: FORCE_SALES_PLAN_ON_ORG,\n description: 'can force a sales plan on an org',\n initialRoles: ['consoleTeam'],\n },\n {\n value: CHANGE_SAFE_ROLE,\n description: 'Can assign/unassign safe roles',\n initialRoles: [\n 'accounts:addSafeRoles',\n 'accounts:consultingManager',\n 'accounts:enterpriseAdmin',\n 'accounts:onboard',\n 'supersupport:agent',\n ],\n },\n {\n value: CHANGE_ORG_MEMBER_ROLE,\n description: 'can change the org roles of a member of any organization',\n initialRoles: [\n 'accounts:admin',\n 'accounts:onboard',\n 'accounts:enterpriseAdmin',\n 'supersupport:agent',\n ],\n },\n {\n value: BOT,\n description: 'Can execute bot commands',\n initialRoles: [],\n },\n {\n value: ADMIN_EARLY_ACCESS_FEATURES_READ,\n description: 'may read Alpha Features',\n initialRoles: [\n 'accounts:read',\n 'accounts:orgCreator',\n 'support:agent',\n 'supersupport:agent',\n 'accounts:admin',\n 'accounts:earlyAccessEditor',\n ],\n },\n {\n value: ADMIN_EARLY_ACCESS_FEATURES_CREATE,\n description: 'may create new Alpha Features',\n initialRoles: [\n 'accounts:admin',\n 'accounts:god',\n 'accounts:earlyAccessEditor',\n ],\n },\n {\n value: ADMIN_EARLY_ACCESS_FEATURES_DELETE,\n description: 'may delete Alpha Features',\n initialRoles: [\n 'accounts:admin',\n 'accounts:god',\n 'accounts:earlyAccessEditor',\n ],\n },\n {\n value: ADMIN_EARLY_ACCESS_FEATURES_UPDATE,\n description: 'may delete Alpha Features',\n initialRoles: [\n 'accounts:admin',\n 'accounts:god',\n 'accounts:earlyAccessEditor',\n ],\n },\n {\n value: PDF_WATERMARK_READ,\n description: 'may read PDF watermark projects and the audit log',\n initialRoles: [\n 'accounts:pdfWatermarkReader',\n 'accounts:pdfWatermarkWriter',\n ],\n },\n {\n value: PDF_WATERMARK_WRITE,\n description: 'may create, update and delete PDF watermark projects',\n initialRoles: ['accounts:pdfWatermarkWriter'],\n },\n {\n value: ADMIN_FEATURE_FLAGS_WRITE,\n description:\n 'may create, edit and delete a feature flag in Camunda Control',\n // `accounts:admin` is a ROLE, and control-backend checks permissions,\n // thus the role gets a permission of its own.\n initialRoles: ['accounts:admin'],\n },\n {\n value: ADMIN_FEATURE_FLAGS_REQUEST,\n description:\n 'may request a feature flag change on int and prod in Camunda Control',\n // The Camundi permission rules give `accounts:featureFlagRequester` to\n // the Engineering division and the Products department. `accounts:admin`\n // approves the request, and must also open one.\n initialRoles: ['accounts:admin', 'accounts:featureFlagRequester'],\n },\n {\n value: CONTROL_AGENT_TOKENS_MANAGE_OWN,\n description:\n 'may create, rotate and revoke own read-only agent tokens in Camunda Control',\n initialRoles: READ_ALL_INITIAL_ROLES,\n },\n {\n value: CONTROL_AGENT_TOKENS_ADMIN,\n description:\n 'may list every agent token in Camunda Control, and revoke any of them',\n initialRoles: ['accounts:admin'],\n },\n {\n value: ADMIN_CHANGE_EMAIL,\n description: 'can change the email of an user',\n initialRoles: ['accounts:admin'],\n },\n {\n value: ADMIN_CHANGE_USER_NAME,\n description: 'can change the name of an user',\n initialRoles: ['accounts:admin'],\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\nexport namespace AccountsPermissions {\n export const READ_ALL = 'aara'\n export const CREATE_ORG = 'aaco'\n export const CHANGE_ORG_NAME = 'aacn'\n export const DELETE_ORG = 'aado'\n export const RESET_TOKEN_VERIFICATION = 'aart'\n export const DELETE_USER = 'aadu'\n export const DELETE_NOT_ACTIVATED_USER = 'aadn'\n export const ADD_TO_ORG = 'aaao'\n export const REMOVE_FROM_ORG = 'aaro'\n /**\n * May open and approve a request of Camunda Control that removes an org\n * member, an owner included, and that can name a new owner. The request\n * needs a second Camundi, so this goes to a wider group than\n * `REMOVE_FROM_ORG`, which acts with no approval.\n */\n export const REMOVE_FROM_ORG_WITH_APPROVAL = 'aarw'\n export const SET_DEFAULT_ORG = 'aasd'\n export const CANCEL_INVITE = 'aaci'\n export const CHANGE_ROLE = 'aacr'\n export const CHANGE_SAFE_ROLE = 'aacs'\n // The org roles of a member of any organization. `CHANGE_ROLE` and\n // `CHANGE_SAFE_ROLE` are for the platform roles.\n export const CHANGE_ORG_MEMBER_ROLE = 'aacm'\n export const EXTEND_TRIAL = 'aaet'\n export const INVALIDATE_TOKEN = 'aait'\n export const SALES_PLAN_CREATE = 'asc'\n export const SALES_PLAN_MODIFY = 'asm'\n export const SALES_PLAN_FORCE_MODIFY = 'asfm'\n export const SALES_PLAN_SWITCH = 'ass'\n export const SALES_PLAN_DELETE = 'asd'\n export const SALES_PLAN_DELETE_AS_GOD = 'asdg'\n export const SUPPORT_AGENT_REMOVE_AGENTS_FROM_ORG = 'asar'\n export const SUPPORT_AGENT_SEE_ORG_MEMBERSHIPS = 'asas'\n export const SUPPORT_AGENT_ADD_TO_ORG = 'asaa'\n export const MODIFY_CLUSTER_PLAN_TYPE_RESERVATIONS = 'acpm'\n export const M2M_SALESPLAN_GET = 'amsg'\n export const M2M_SALESPLAN_SWITCH = 'amss'\n // The reads of the daily fleet statistics of control-backend. Each one opens\n // one GET route only. `aara` also opens writes, so a machine does not get it.\n export const M2M_ORG_LIST = 'amol'\n export const M2M_FLEET_HOSTING_COST_GET = 'amhc'\n export const M2M_ACTIVE_USERS_GET = 'amau'\n\n // The routes of `api/admin/approvals` read `ConsolePermissions.M2M_CONTROL_APPROVALS`,\n // the one m2m permission of control-backend for accounts and console.\n\n export const ENTERPRISE_ORG_CONVERT = 'aeoc'\n\n export const ENTERPRISE_ORG_MODIFY = 'aeom'\n\n export const ENTERPRISE_ORG_MODIFY_START_DATE = 'aeos'\n\n export const TRIAL_TO_IN_NEGOTIATION_CONVERT = 'atin'\n\n export const EXTERNAL_M2M_GET_ORG_MEMBERS = 'amog'\n export const EXTERNAL_M2M_SEARCH_ORGS = 'amos'\n export const EXTERNAL_M2M_QA_ORG_CREATE = 'amqc'\n export const EXTERNAL_M2M_OFFBOARD_CAMUNDI = 'amoc'\n\n export const ORG_MAY_CHANGE_LIMITS = 'alc'\n export const ORG_MAY_CHANGE_GENERATION_WHITELIST = 'algw'\n export const ORG_CANCEL_PAID = 'aacp'\n\n export const ADMIN_SQL = 'aasq'\n\n export const ADMIN_AUTH0_CONNECTIONS_CREATE = 'aa0c'\n export const ADMIN_AUTH0_CONNECTIONS_READ = 'aa0r'\n export const ADMIN_AUTH0_CONNECTIONS_UPDATE = 'aa0u'\n export const ADMIN_AUTH0_CONNECTIONS_DELETE = 'aa0d'\n export const UNBLOCK_USER = 'aaub'\n\n export const ADMIN_CHANGE_EMAIL = 'aace'\n export const ADMIN_CHANGE_USER_NAME = 'aacu'\n\n export const BOT = 'abot'\n\n // OBACHT: NOT THIS ONE\n export const MODELER_DELETE_USER = 'mdu'\n\n export const GOD_CRON = 'gcr'\n export const GOD_SIGNUP_SPAM_PATTERNS = 'gsp'\n export const GOD_PURGE_USERS = 'gpu'\n export const GOD_UPDATE_USER_METADATA = 'gum'\n\n export const ADMIN_EARLY_ACCESS_FEATURES_READ = 'aaer'\n export const ADMIN_EARLY_ACCESS_FEATURES_CREATE = 'aaec'\n export const ADMIN_EARLY_ACCESS_FEATURES_DELETE = 'aaed'\n export const ADMIN_EARLY_ACCESS_FEATURES_UPDATE = 'aaeu'\n export const PDF_WATERMARK_READ = 'awmr'\n export const PDF_WATERMARK_WRITE = 'awmw'\n export const ROLE_SUPPORT_AGENT = 'support:agent'\n export const FORCE_SALES_PLAN_ON_ORG = 'aafs'\n\n /**\n * May create, edit and delete a feature flag on the page of Camunda Control.\n *\n * A row of the table of control-backend is the value of the flag on its\n * stage, and no approval stands in front of a write. Reading the rows takes\n * `READ_ALL`. Do not reuse `acfo`: it still exists at Auth0 with the meaning\n * of the reverted override design.\n */\n export const ADMIN_FEATURE_FLAGS_WRITE = 'aafw'\n\n /**\n * May open a `change-feature-flag` or `disable-feature-flag` request on int\n * and prod in Camunda Control. It does not approve the request: approval needs\n * `ADMIN_FEATURE_FLAGS_WRITE`, which also opens one. On dev anybody signed\n * in can open a `change-feature-flag` request. A `disable-feature-flag`\n * request runs at once there, and needs `aafw`.\n */\n export const ADMIN_FEATURE_FLAGS_REQUEST = 'aafr'\n\n /**\n * May create, list, rotate and revoke OWN agent tokens in Camunda Control.\n *\n * An agent token reads with the permissions of its creator, cut to the\n * read set of each backend. A creator without `READ_ALL` thus makes a token\n * that can read nothing in control-backend, so this permission goes to the\n * same roles.\n */\n export const CONTROL_AGENT_TOKENS_MANAGE_OWN = 'aato'\n\n /** May list every agent token of the stage, and revoke any of them. */\n export const CONTROL_AGENT_TOKENS_ADMIN = 'aata'\n\n export interface Features {\n admin: {\n readAll: boolean\n createOrg: boolean\n changeOrgName: boolean\n deleteOrg: boolean\n resetTokenVerification: boolean\n deleteUser: boolean\n deleteNotActivatedUser: boolean\n addToOrg: boolean\n removeFromOrg: boolean\n setDefaultOrg: boolean\n cancelInvite: boolean\n changeRole: boolean\n addSafeRole: boolean\n changeOrgMemberRole: boolean\n deleteClusters: boolean\n extendTrial: boolean\n invalidateToken: boolean\n cancelPaid: boolean\n searchForOrgs: boolean\n readAudit: boolean\n modifyClusterPlanTypeReservations: boolean\n mayChangeOrgLimits: boolean\n mayChangeGenerationWhiteList: boolean\n sql: boolean\n modelerDeleteUser: boolean\n unblockUser: boolean\n god: {\n triggerCrons: boolean\n forceSalesPlanOnOrg: boolean\n changeSignupSpamPatterns: boolean\n purgeUsers: boolean\n updateUserMetadata: boolean\n }\n bot: boolean\n changeEmail: boolean\n changeUserName: boolean\n }\n salesPlan: {\n create: boolean\n modify: boolean\n forceModify: boolean\n switch: boolean\n delete: boolean\n godDelete: boolean\n }\n enterprise: {\n org: {\n convert: boolean\n modify: boolean\n modifyStartDate: boolean\n }\n }\n trial: {\n convertToInNegotiation: boolean\n }\n supportAgent: {\n removeAgentsFromOrg: boolean\n seeOrgMemberships: boolean\n addAgentsToOrg: boolean\n }\n m2m: {\n salesplan: {\n get: boolean\n switch: boolean\n }\n\n /** `GET /api/organizations`. See `M2M_ORG_LIST`. */\n orgList: boolean\n /** `GET /api/hdp/hosting-cost`. See `M2M_FLEET_HOSTING_COST_GET`. */\n fleetHostingCost: boolean\n /** `GET /api/logs/active-users`. See `M2M_ACTIVE_USERS_GET`. */\n activeUsers: boolean\n fetchMigrationData: boolean\n /** Every route of `api/admin/approvals`. See `M2M_CONTROL_APPROVALS`. */\n approvals: boolean\n }\n externalM2m: {\n org: {\n members: {\n get: boolean\n }\n search: boolean\n }\n qa: {\n org: {\n create: boolean\n }\n }\n offboarding: {\n camundi: boolean\n }\n }\n auth0: {\n connections: {\n create: boolean\n read: boolean\n update: boolean\n delete: boolean\n }\n }\n notifications: {\n global: {\n read: boolean\n delete: boolean\n create: boolean\n }\n }\n earlyAccessFeatures: {\n read: boolean\n create: boolean\n delete: boolean\n update: boolean\n }\n pdfWatermark: {\n read: boolean\n write: boolean\n }\n featureFlags: {\n write: boolean\n request: boolean\n }\n agentTokens: {\n manageOwn: boolean\n admin: boolean\n }\n }\n\n export function createEmptyFeatures(): Features {\n return {\n admin: {\n readAll: false,\n createOrg: false,\n changeOrgName: false,\n deleteOrg: false,\n resetTokenVerification: false,\n deleteUser: false,\n deleteNotActivatedUser: false,\n addToOrg: false,\n removeFromOrg: false,\n setDefaultOrg: false,\n cancelInvite: false,\n changeRole: false,\n addSafeRole: false,\n changeOrgMemberRole: false,\n deleteClusters: false,\n extendTrial: false,\n invalidateToken: false,\n cancelPaid: false,\n searchForOrgs: false,\n readAudit: false,\n modifyClusterPlanTypeReservations: false,\n mayChangeOrgLimits: false,\n mayChangeGenerationWhiteList: false,\n sql: false,\n modelerDeleteUser: false,\n unblockUser: false,\n god: {\n triggerCrons: false,\n forceSalesPlanOnOrg: false,\n changeSignupSpamPatterns: false,\n purgeUsers: false,\n updateUserMetadata: false,\n },\n bot: false,\n changeEmail: false,\n changeUserName: false,\n },\n salesPlan: {\n create: false,\n modify: false,\n forceModify: false,\n switch: false,\n delete: false,\n godDelete: false,\n },\n enterprise: {\n org: { convert: false, modify: false, modifyStartDate: false },\n },\n trial: {\n convertToInNegotiation: false,\n },\n supportAgent: {\n removeAgentsFromOrg: false,\n seeOrgMemberships: false,\n addAgentsToOrg: false,\n },\n m2m: {\n salesplan: {\n get: false,\n switch: false,\n },\n orgList: false,\n fleetHostingCost: false,\n activeUsers: false,\n fetchMigrationData: false,\n approvals: false,\n },\n externalM2m: {\n org: {\n members: {\n get: false,\n },\n search: false,\n },\n // eslint-disable-next-line id-length\n qa: {\n org: {\n create: false,\n },\n },\n offboarding: {\n camundi: false,\n },\n },\n auth0: {\n connections: {\n create: false,\n read: false,\n update: false,\n delete: false,\n },\n },\n notifications: {\n global: {\n read: false,\n delete: false,\n create: false,\n },\n },\n earlyAccessFeatures: {\n read: false,\n create: false,\n delete: false,\n update: false,\n },\n pdfWatermark: {\n read: false,\n write: false,\n },\n featureFlags: {\n write: false,\n request: false,\n },\n agentTokens: {\n manageOwn: false,\n admin: false,\n },\n }\n }\n\n /**\n * The roles that hold `READ_ALL`. `CONTROL_AGENT_TOKENS_MANAGE_OWN` goes to\n * the same roles, so the two lists cannot drift.\n */\n const READ_ALL_INITIAL_ROLES: Roles[] = [\n 'accounts:read',\n 'accounts:onboard',\n 'accounts:orgCreator',\n 'accounts:admin',\n 'accounts:editSalesPlans',\n 'console:admin',\n 'console:admin:readonly',\n 'support:agent',\n 'supersupport:agent',\n 'accounts:trialExtender',\n 'accounts:limitExtender',\n 'accounts:enterpriseAdmin',\n 'accounts:enterpriseOffboarding',\n 'console:C8ReleaseManager',\n 'console:C8UpdateEnforcer',\n 'accounts:addSafeRoles',\n 'accounts:consultingManager',\n 'accounts:earlyAccessEditor',\n ]\n\n export const PermissionsAtAuth0: Array<{\n value: string\n description: string\n initialRoles: Roles[]\n }> = [\n {\n value: READ_ALL,\n description: 'read access to all orgs and users',\n initialRoles: READ_ALL_INITIAL_ROLES,\n },\n {\n value: CREATE_ORG,\n description: 'can create organisations',\n initialRoles: [\n 'accounts:onboard',\n 'accounts:orgCreator',\n 'accounts:admin',\n 'accounts:enterpriseAdmin',\n ],\n },\n {\n value: CHANGE_ORG_NAME,\n description: 'can change name of organisations',\n initialRoles: [\n 'accounts:admin',\n 'support:agent',\n 'supersupport:agent',\n 'accounts:onboard',\n 'accounts:enterpriseAdmin',\n ],\n },\n {\n value: DELETE_ORG,\n description: 'can delete organisations',\n initialRoles: ['accounts:admin'],\n },\n {\n value: RESET_TOKEN_VERIFICATION,\n description: 'can reset a verification token of a pending user',\n initialRoles: [\n 'accounts:onboard',\n 'accounts:admin',\n 'accounts:enterpriseAdmin',\n ],\n },\n {\n value: DELETE_USER,\n description: 'can delete users',\n initialRoles: ['accounts:god'],\n },\n {\n value: DELETE_NOT_ACTIVATED_USER,\n description: 'can delete users that are not activated yet',\n initialRoles: [\n 'accounts:onboard',\n 'accounts:admin',\n 'accounts:enterpriseAdmin',\n ],\n },\n {\n value: ADD_TO_ORG,\n description: 'can add someone to an org',\n initialRoles: [\n 'accounts:onboard',\n 'accounts:orgCreator',\n 'accounts:admin',\n 'accounts:enterpriseAdmin',\n 'supersupport:agent',\n ],\n },\n {\n value: REMOVE_FROM_ORG,\n description: 'can remove someone from an org',\n initialRoles: [\n 'accounts:admin',\n 'supersupport:agent',\n 'accounts:enterpriseAdmin',\n ],\n },\n {\n value: REMOVE_FROM_ORG_WITH_APPROVAL,\n description:\n 'may open and approve a request that removes an org member, an owner included',\n // The Camundi permission rules give `accounts:orgMemberRemover` to CS.\n initialRoles: ['accounts:admin', 'accounts:orgMemberRemover'],\n },\n {\n value: SET_DEFAULT_ORG,\n description: 'can set an org as default for any user',\n initialRoles: [\n 'support:agent',\n 'supersupport:agent',\n 'accounts:admin',\n 'accounts:enterpriseAdmin',\n 'accounts:onboard',\n ],\n },\n {\n value: CANCEL_INVITE,\n description: 'can cancelpending invites',\n initialRoles: [\n 'accounts:admin',\n 'accounts:onboard',\n 'support:agent',\n 'supersupport:agent',\n 'accounts:enterpriseAdmin',\n ],\n },\n {\n value: CHANGE_ROLE,\n description: 'can change the role of a user',\n // `CHANGE_ROLE` reaches every platform role, also `accounts:admin`, so\n // only `accounts:admin` holds it.\n initialRoles: ['accounts:admin'],\n },\n {\n value: EXTEND_TRIAL,\n description: 'can extend the trial period of an organization',\n initialRoles: [\n 'accounts:admin',\n 'accounts:onboard',\n 'accounts:trialExtender',\n 'accounts:enterpriseAdmin',\n ],\n },\n {\n value: INVALIDATE_TOKEN,\n description: 'can invalidate tokens in TokenIssuer',\n initialRoles: ['accounts:admin'],\n },\n {\n value: SALES_PLAN_CREATE,\n description: 'can create a SalesPlan',\n initialRoles: ['accounts:admin'],\n },\n {\n value: SALES_PLAN_MODIFY,\n description: 'can modify a SalesPlan',\n initialRoles: ['accounts:admin', 'accounts:editSalesPlans'],\n },\n {\n value: SALES_PLAN_FORCE_MODIFY,\n description:\n 'can force modify a SalesPlan without caring about the orgs actual reservations/cluster usage',\n initialRoles: [],\n },\n {\n value: SALES_PLAN_SWITCH,\n description: 'can switch an organization to another SalesPlan',\n initialRoles: [\n 'accounts:admin',\n 'accounts:enterpriseOffboarding',\n 'accounts:consultingManager',\n ],\n },\n {\n value: SALES_PLAN_DELETE,\n description:\n 'can delete a SalesPlan if it is not used by any Organization',\n initialRoles: ['accounts:admin'],\n },\n\n {\n value: SALES_PLAN_DELETE_AS_GOD,\n description: `can delete salesplans even if there is no replacement salesplan for this type. use with great caution`,\n initialRoles: [],\n },\n {\n value: SUPPORT_AGENT_REMOVE_AGENTS_FROM_ORG,\n description: 'can remove support agents from organizations',\n initialRoles: ['support:agent', 'supersupport:agent'],\n },\n {\n value: SUPPORT_AGENT_SEE_ORG_MEMBERSHIPS,\n description: 'can see all org memberships of support agents',\n initialRoles: ['support:agent', 'supersupport:agent'],\n },\n {\n value: SUPPORT_AGENT_ADD_TO_ORG,\n description: 'can add users as support agent to an organization',\n initialRoles: ['support:agent', 'supersupport:agent'],\n },\n {\n value: MODIFY_CLUSTER_PLAN_TYPE_RESERVATIONS,\n description: 'can modify cluster plan type reservations of an org',\n initialRoles: [],\n },\n {\n value: M2M_SALESPLAN_GET,\n description: 'm2m can get salesplans',\n initialRoles: [],\n },\n {\n value: M2M_SALESPLAN_SWITCH,\n description: 'm2m can switch salesplans',\n initialRoles: [],\n },\n {\n value: M2M_ORG_LIST,\n description: 'm2m can list all orgs (GET /api/organizations)',\n initialRoles: [],\n },\n {\n value: M2M_FLEET_HOSTING_COST_GET,\n description:\n 'm2m can read the hosting cost of all clusters (GET /api/hdp/hosting-cost)',\n initialRoles: [],\n },\n {\n value: M2M_ACTIVE_USERS_GET,\n description:\n 'm2m can read the count of active users (GET /api/logs/active-users)',\n initialRoles: [],\n },\n {\n value: ENTERPRISE_ORG_CONVERT,\n description: 'can convert orgs to enterprise plans',\n initialRoles: [\n 'accounts:admin',\n 'accounts:onboard',\n 'accounts:enterpriseAdmin',\n ],\n },\n {\n value: ENTERPRISE_ORG_MODIFY,\n description:\n 'can modify value metrics and contract duration of enterprise orgs',\n initialRoles: [\n 'accounts:admin',\n 'accounts:enterpriseAdmin',\n 'accounts:enterpriseOffboarding',\n ],\n },\n {\n value: ENTERPRISE_ORG_MODIFY_START_DATE,\n description: 'can modify start date of enterprise orgs',\n initialRoles: [\n 'accounts:god',\n 'accounts:enterpriseOffboarding',\n 'accounts:admin',\n 'accounts:enterpriseAdmin',\n ],\n },\n {\n value: TRIAL_TO_IN_NEGOTIATION_CONVERT,\n description: 'can convert trial orgs to in-negotiation plans',\n initialRoles: ['accounts:admin', 'accounts:enterpriseAdmin'],\n },\n {\n value: EXTERNAL_M2M_GET_ORG_MEMBERS,\n description: 'external m2m can get all members of all orgs',\n initialRoles: [],\n },\n {\n value: EXTERNAL_M2M_QA_ORG_CREATE,\n description:\n 'external m2m can create orgs, initially add users to org and assign sales plan',\n initialRoles: [],\n },\n {\n value: EXTERNAL_M2M_OFFBOARD_CAMUNDI,\n description:\n 'external m2m can trigger offboarding process for Camunda employees',\n initialRoles: ['accounts:god'],\n },\n {\n value: EXTERNAL_M2M_SEARCH_ORGS,\n description: 'external m2m can search organizations',\n initialRoles: [],\n },\n {\n value: ORG_MAY_CHANGE_LIMITS,\n description: 'may change limits of an organization',\n initialRoles: [\n 'accounts:admin',\n 'accounts:enterpriseAdmin',\n 'accounts:limitExtender',\n ],\n },\n {\n value: ORG_MAY_CHANGE_GENERATION_WHITELIST,\n description: 'may change the generation whitelist of an organization',\n initialRoles: ['accounts:admin', 'accounts:clusterUpdates'],\n },\n {\n value: ORG_CANCEL_PAID,\n description: 'may terminate a running paid organisation',\n initialRoles: ['accounts:admin', 'accounts:enterpriseOffboarding'],\n },\n {\n value: ADMIN_SQL,\n description: 'may query the DB',\n initialRoles: ['accounts:god'],\n },\n {\n value: ADMIN_AUTH0_CONNECTIONS_READ,\n description: 'may read connections from auth0',\n initialRoles: [\n 'accounts:read',\n 'accounts:orgCreator',\n 'support:agent',\n 'supersupport:agent',\n ],\n },\n {\n value: ADMIN_AUTH0_CONNECTIONS_CREATE,\n description: 'may create new connections at auth0',\n initialRoles: ['accounts:connections:create', 'accounts:god'],\n },\n {\n value: ADMIN_AUTH0_CONNECTIONS_UPDATE,\n description: 'may update connections at auth0',\n initialRoles: ['accounts:connections:update', 'accounts:god'],\n },\n {\n value: ADMIN_AUTH0_CONNECTIONS_DELETE,\n description: 'may delete connections at auth0',\n initialRoles: ['accounts:connections:delete', 'accounts:god'],\n },\n {\n value: MODELER_DELETE_USER,\n description: 'can delete a user within the modeler',\n initialRoles: ['modeler:admin'],\n },\n {\n value: UNBLOCK_USER,\n description: 'can unblock a user',\n initialRoles: ['accounts:admin'],\n },\n {\n value: GOD_CRON,\n description: 'can run cron jobs',\n initialRoles: ['consoleTeam'],\n },\n {\n value: GOD_SIGNUP_SPAM_PATTERNS,\n description: 'can read and change signup spam patterns',\n initialRoles: ['consoleTeam', 'accounts:god'],\n },\n {\n value: GOD_PURGE_USERS,\n description: 'can purge user records based on create date / name pattern',\n initialRoles: ['consoleTeam', 'accounts:god'],\n },\n {\n value: GOD_UPDATE_USER_METADATA,\n description: 'can update auth0 user_metadata and app_metadata',\n initialRoles: ['accounts:god'],\n },\n {\n value: FORCE_SALES_PLAN_ON_ORG,\n description: 'can force a sales plan on an org',\n initialRoles: ['consoleTeam'],\n },\n {\n value: CHANGE_SAFE_ROLE,\n description: 'Can assign/unassign safe roles',\n initialRoles: [\n 'accounts:addSafeRoles',\n 'accounts:consultingManager',\n 'accounts:enterpriseAdmin',\n 'accounts:onboard',\n 'supersupport:agent',\n ],\n },\n {\n value: CHANGE_ORG_MEMBER_ROLE,\n description: 'can change the org roles of a member of any organization',\n initialRoles: [\n 'accounts:admin',\n 'accounts:onboard',\n 'accounts:enterpriseAdmin',\n 'supersupport:agent',\n ],\n },\n {\n value: BOT,\n description: 'Can execute bot commands',\n initialRoles: [],\n },\n {\n value: ADMIN_EARLY_ACCESS_FEATURES_READ,\n description: 'may read Alpha Features',\n initialRoles: [\n 'accounts:read',\n 'accounts:orgCreator',\n 'support:agent',\n 'supersupport:agent',\n 'accounts:admin',\n 'accounts:earlyAccessEditor',\n ],\n },\n {\n value: ADMIN_EARLY_ACCESS_FEATURES_CREATE,\n description: 'may create new Alpha Features',\n initialRoles: [\n 'accounts:admin',\n 'accounts:god',\n 'accounts:earlyAccessEditor',\n ],\n },\n {\n value: ADMIN_EARLY_ACCESS_FEATURES_DELETE,\n description: 'may delete Alpha Features',\n initialRoles: [\n 'accounts:admin',\n 'accounts:god',\n 'accounts:earlyAccessEditor',\n ],\n },\n {\n value: ADMIN_EARLY_ACCESS_FEATURES_UPDATE,\n description: 'may delete Alpha Features',\n initialRoles: [\n 'accounts:admin',\n 'accounts:god',\n 'accounts:earlyAccessEditor',\n ],\n },\n {\n value: PDF_WATERMARK_READ,\n description: 'may read PDF watermark projects and the audit log',\n initialRoles: [\n 'accounts:pdfWatermarkReader',\n 'accounts:pdfWatermarkWriter',\n ],\n },\n {\n value: PDF_WATERMARK_WRITE,\n description: 'may create, update and delete PDF watermark projects',\n initialRoles: ['accounts:pdfWatermarkWriter'],\n },\n {\n value: ADMIN_FEATURE_FLAGS_WRITE,\n description:\n 'may create, edit and delete a feature flag in Camunda Control',\n // `accounts:admin` is a ROLE, and control-backend checks permissions,\n // thus the role gets a permission of its own.\n initialRoles: ['accounts:admin'],\n },\n {\n value: ADMIN_FEATURE_FLAGS_REQUEST,\n description:\n 'may request a feature flag change on int and prod in Camunda Control',\n // The Camundi permission rules give `accounts:featureFlagRequester` to\n // the Engineering division and the Products department. `accounts:admin`\n // approves the request, and must also open one.\n initialRoles: ['accounts:admin', 'accounts:featureFlagRequester'],\n },\n {\n value: CONTROL_AGENT_TOKENS_MANAGE_OWN,\n description:\n 'may create, rotate and revoke own read-only agent tokens in Camunda Control',\n initialRoles: READ_ALL_INITIAL_ROLES,\n },\n {\n value: CONTROL_AGENT_TOKENS_ADMIN,\n description:\n 'may list every agent token in Camunda Control, and revoke any of them',\n initialRoles: ['accounts:admin'],\n },\n {\n value: ADMIN_CHANGE_EMAIL,\n description: 'can change the email of an user',\n initialRoles: ['accounts:admin'],\n },\n {\n value: ADMIN_CHANGE_USER_NAME,\n description: 'can change the name of an user',\n initialRoles: ['accounts:admin'],\n },\n ]\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["AccountsPermissions"]
|
|
7
7
|
}
|
|
@@ -114,6 +114,13 @@ function accountsUserFeaturesFromPermissions(permissions) {
|
|
|
114
114
|
get: permissions.includes(AccountsPermissions.M2M_SALESPLAN_GET),
|
|
115
115
|
switch: permissions.includes(AccountsPermissions.M2M_SALESPLAN_SWITCH)
|
|
116
116
|
},
|
|
117
|
+
orgList: permissions.includes(AccountsPermissions.M2M_ORG_LIST),
|
|
118
|
+
fleetHostingCost: permissions.includes(
|
|
119
|
+
AccountsPermissions.M2M_FLEET_HOSTING_COST_GET
|
|
120
|
+
),
|
|
121
|
+
activeUsers: permissions.includes(
|
|
122
|
+
AccountsPermissions.M2M_ACTIVE_USERS_GET
|
|
123
|
+
),
|
|
117
124
|
fetchMigrationData: permissions.includes(
|
|
118
125
|
ConsolePermissions.M2M_FETCH_MIGRATION_DATA
|
|
119
126
|
),
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/permissions/combo.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 { AccountsPermissions } from './accounts.permissions.js'\nimport { AuditLoggerPermissions } from './auditlogger.permissions.js'\nimport { ConsolePermissions } from './console.permissions.js'\nimport { NotificationPermissions } from './notification.permissions.js'\n\nexport function accountsUserFeaturesFromPermissions(permissions: string[]) {\n const newFeatures: AccountsPermissions.Features = {\n admin: {\n readAll: permissions.includes(AccountsPermissions.READ_ALL),\n createOrg: permissions.includes(AccountsPermissions.CREATE_ORG),\n changeOrgName: permissions.includes(AccountsPermissions.CHANGE_ORG_NAME),\n\n deleteOrg: permissions.includes(AccountsPermissions.DELETE_ORG),\n resetTokenVerification: permissions.includes(\n AccountsPermissions.RESET_TOKEN_VERIFICATION,\n ),\n deleteUser: permissions.includes(AccountsPermissions.DELETE_USER),\n deleteNotActivatedUser: permissions.includes(\n AccountsPermissions.DELETE_NOT_ACTIVATED_USER,\n ),\n addToOrg: permissions.includes(AccountsPermissions.ADD_TO_ORG),\n removeFromOrg: permissions.includes(AccountsPermissions.REMOVE_FROM_ORG),\n setDefaultOrg: permissions.includes(AccountsPermissions.SET_DEFAULT_ORG),\n cancelInvite: permissions.includes(AccountsPermissions.CANCEL_INVITE),\n changeRole: permissions.includes(AccountsPermissions.CHANGE_ROLE),\n addSafeRole: permissions.includes(AccountsPermissions.CHANGE_SAFE_ROLE),\n changeOrgMemberRole: permissions.includes(\n AccountsPermissions.CHANGE_ORG_MEMBER_ROLE,\n ),\n deleteClusters: permissions.includes(\n ConsolePermissions.CLUSTERS_DELETE_CLUSTER,\n ),\n extendTrial: permissions.includes(AccountsPermissions.EXTEND_TRIAL),\n invalidateToken: permissions.includes(\n AccountsPermissions.INVALIDATE_TOKEN,\n ),\n cancelPaid: permissions.includes(AccountsPermissions.ORG_CANCEL_PAID),\n searchForOrgs: permissions.includes(\n ConsolePermissions.CLUSTER_PLAN_SEE_ALL,\n ),\n readAudit: permissions.includes(AuditLoggerPermissions.READ),\n modifyClusterPlanTypeReservations: permissions.includes(\n AccountsPermissions.MODIFY_CLUSTER_PLAN_TYPE_RESERVATIONS,\n ),\n mayChangeOrgLimits: permissions.includes(\n AccountsPermissions.ORG_MAY_CHANGE_LIMITS,\n ),\n mayChangeGenerationWhiteList: permissions.includes(\n AccountsPermissions.ORG_MAY_CHANGE_GENERATION_WHITELIST,\n ),\n sql: permissions.includes(AccountsPermissions.ADMIN_SQL),\n modelerDeleteUser: permissions.includes(\n AccountsPermissions.MODELER_DELETE_USER,\n ),\n unblockUser: permissions.includes(AccountsPermissions.UNBLOCK_USER),\n god: {\n triggerCrons: permissions.includes(AccountsPermissions.GOD_CRON),\n forceSalesPlanOnOrg: permissions.includes(\n AccountsPermissions.FORCE_SALES_PLAN_ON_ORG,\n ),\n changeSignupSpamPatterns: permissions.includes(\n AccountsPermissions.GOD_SIGNUP_SPAM_PATTERNS,\n ),\n purgeUsers: permissions.includes(AccountsPermissions.GOD_PURGE_USERS),\n updateUserMetadata: permissions.includes(\n AccountsPermissions.GOD_UPDATE_USER_METADATA,\n ),\n },\n bot: permissions.includes(AccountsPermissions.BOT),\n changeEmail: permissions.includes(AccountsPermissions.ADMIN_CHANGE_EMAIL),\n changeUserName: permissions.includes(\n AccountsPermissions.ADMIN_CHANGE_USER_NAME,\n ),\n },\n salesPlan: {\n create: permissions.includes(AccountsPermissions.SALES_PLAN_CREATE),\n modify: permissions.includes(AccountsPermissions.SALES_PLAN_MODIFY),\n forceModify: permissions.includes(\n AccountsPermissions.SALES_PLAN_FORCE_MODIFY,\n ),\n switch: permissions.includes(AccountsPermissions.SALES_PLAN_SWITCH),\n delete: permissions.includes(AccountsPermissions.SALES_PLAN_DELETE),\n godDelete: permissions.includes(\n AccountsPermissions.SALES_PLAN_DELETE_AS_GOD,\n ),\n },\n enterprise: {\n org: {\n convert: permissions.includes(\n AccountsPermissions.ENTERPRISE_ORG_CONVERT,\n ),\n modify: permissions.includes(AccountsPermissions.ENTERPRISE_ORG_MODIFY),\n modifyStartDate: permissions.includes(\n AccountsPermissions.ENTERPRISE_ORG_MODIFY_START_DATE,\n ),\n },\n },\n trial: {\n convertToInNegotiation: permissions.includes(\n AccountsPermissions.TRIAL_TO_IN_NEGOTIATION_CONVERT,\n ),\n },\n supportAgent: {\n removeAgentsFromOrg: permissions.includes(\n AccountsPermissions.SUPPORT_AGENT_REMOVE_AGENTS_FROM_ORG,\n ),\n seeOrgMemberships: permissions.includes(\n AccountsPermissions.SUPPORT_AGENT_SEE_ORG_MEMBERSHIPS,\n ),\n addAgentsToOrg: permissions.includes(\n AccountsPermissions.SUPPORT_AGENT_ADD_TO_ORG,\n ),\n },\n m2m: {\n salesplan: {\n get: permissions.includes(AccountsPermissions.M2M_SALESPLAN_GET),\n switch: permissions.includes(AccountsPermissions.M2M_SALESPLAN_SWITCH),\n },\n fetchMigrationData: permissions.includes(\n ConsolePermissions.M2M_FETCH_MIGRATION_DATA,\n ),\n approvals: permissions.includes(ConsolePermissions.M2M_CONTROL_APPROVALS),\n },\n externalM2m: {\n org: {\n members: {\n get: permissions.includes(\n AccountsPermissions.EXTERNAL_M2M_GET_ORG_MEMBERS,\n ),\n },\n search: permissions.includes(\n AccountsPermissions.EXTERNAL_M2M_SEARCH_ORGS,\n ),\n },\n // eslint-disable-next-line id-length\n qa: {\n org: {\n create: permissions.includes(\n AccountsPermissions.EXTERNAL_M2M_QA_ORG_CREATE,\n ),\n },\n },\n offboarding: {\n camundi: permissions.includes(\n AccountsPermissions.EXTERNAL_M2M_OFFBOARD_CAMUNDI,\n ),\n },\n },\n auth0: {\n connections: {\n create: permissions.includes(\n AccountsPermissions.ADMIN_AUTH0_CONNECTIONS_CREATE,\n ),\n read: permissions.includes(\n AccountsPermissions.ADMIN_AUTH0_CONNECTIONS_READ,\n ),\n update: permissions.includes(\n AccountsPermissions.ADMIN_AUTH0_CONNECTIONS_UPDATE,\n ),\n delete: permissions.includes(\n AccountsPermissions.ADMIN_AUTH0_CONNECTIONS_DELETE,\n ),\n },\n },\n notifications: {\n global: {\n read: permissions.includes(NotificationPermissions.READ_GLOBAL),\n delete: permissions.includes(NotificationPermissions.DELETE_GLOBAL),\n create: permissions.includes(NotificationPermissions.CREATE_GLOBAL),\n },\n },\n earlyAccessFeatures: {\n read: permissions.includes(\n AccountsPermissions.ADMIN_EARLY_ACCESS_FEATURES_READ,\n ),\n create: permissions.includes(\n AccountsPermissions.ADMIN_EARLY_ACCESS_FEATURES_CREATE,\n ),\n delete: permissions.includes(\n AccountsPermissions.ADMIN_EARLY_ACCESS_FEATURES_DELETE,\n ),\n update: permissions.includes(\n AccountsPermissions.ADMIN_EARLY_ACCESS_FEATURES_UPDATE,\n ),\n },\n pdfWatermark: {\n read: permissions.includes(AccountsPermissions.PDF_WATERMARK_READ),\n write: permissions.includes(AccountsPermissions.PDF_WATERMARK_WRITE),\n },\n featureFlags: {\n write: permissions.includes(\n AccountsPermissions.ADMIN_FEATURE_FLAGS_WRITE,\n ),\n request: permissions.includes(\n AccountsPermissions.ADMIN_FEATURE_FLAGS_REQUEST,\n ),\n },\n agentTokens: {\n manageOwn: permissions.includes(\n AccountsPermissions.CONTROL_AGENT_TOKENS_MANAGE_OWN,\n ),\n admin: permissions.includes(\n AccountsPermissions.CONTROL_AGENT_TOKENS_ADMIN,\n ),\n },\n }\n return newFeatures\n}\n\nexport function consoleUserFeaturesFromPermissions(permissions: string[]) {\n const newFeatures: ConsolePermissions.Features = {\n apiClient: {\n read: permissions.includes(ConsolePermissions.APICLIENT_READ),\n delete: permissions.includes(ConsolePermissions.APICLIENT_DELETE),\n },\n multiCluster: {\n admin: permissions.includes(ConsolePermissions.MULTICLUSTER_ADMIN),\n },\n multiGen: {\n admin: {\n see: permissions.includes(\n ConsolePermissions.CHANNELS_AND_GENERATIONS_ADMIN_SEE,\n ),\n modify: permissions.includes(\n ConsolePermissions.CHANNELS_AND_GENERATIONS_ADMIN,\n ),\n patchExistingChannel: permissions.includes(\n ConsolePermissions.CHANNELS_AND_GENERATIONS_ADMIN_PATCH_EXISTING_CHANNEL,\n ),\n migrate: permissions.includes(\n ConsolePermissions.CHANNELS_AND_GENERATIONS_ADMIN_MIGRATE,\n ),\n deleteAllClustersOfGeneration: permissions.includes(\n ConsolePermissions.CHANNELS_AND_GENERATIONS_ADMIN_DELETE_ALL_CLUSTERS,\n ),\n },\n releaseTrain: {\n publish: permissions.includes(ConsolePermissions.RELEASE_TRAIN_PUBLISH),\n },\n },\n clusters: {\n canReadAllClusterInfo: permissions.includes(\n ConsolePermissions.CLUSTERS_READALLCLUSTERINFO,\n ),\n canDeleteAllClusters: permissions.includes(\n ConsolePermissions.CLUSTERS_DELETE_CLUSTER,\n ),\n canMoveToOtherOrg: permissions.includes(\n ConsolePermissions.CLUSTERS_CAN_MOVE_TO_OTHER_ORG,\n ),\n createOnBehalf: permissions.includes(\n ConsolePermissions.CLUSTER_CREATE_ON_BEHALF,\n ),\n canSendToSleep: permissions.includes(\n ConsolePermissions.CLUSTERS_CAN_SEND_TO_SLEEP,\n ),\n canCreateInternalBackup: permissions.includes(\n ConsolePermissions.CLUSTERS_CAN_CREATE_INTERNAL_BACKUP,\n ),\n canUpdateClusterPlanType: permissions.includes(\n ConsolePermissions.CLUSTERS_CAN_UPDATE_CLUSTERPLANTYPE,\n ),\n canOverrideEnvVars: permissions.includes(\n ConsolePermissions.CLUSTERS_CAN_OVERRIDE_ENV_VARS,\n ),\n canCreateModificationConfig: permissions.includes(\n ConsolePermissions.CLUSTERS_CAN_CREATE_MODIFICATION_CONFIG,\n ),\n canUpgradeGeneration: permissions.includes(\n ConsolePermissions.CLUSTERS_CAN_UPDATE_GENERATION,\n ),\n canUpgradeGenerationYolo: permissions.includes(\n ConsolePermissions.CLUSTERS_CAN_UPDATE_GENERATION_YOLO,\n ),\n canUpdateOptionalTelemetry: permissions.includes(\n ConsolePermissions.CLUSTERS_CAN_UPDATE_OPTIONAL_TELEMETRY,\n ),\n canUpdateZeebeRebalancing: permissions.includes(\n ConsolePermissions.CLUSTERS_CAN_UPDATE_ZEEBE_REBALANCING,\n ),\n },\n clusterPlan: {\n seeAll: permissions.includes(ConsolePermissions.CLUSTER_PLAN_SEE_ALL),\n create: permissions.includes(ConsolePermissions.CLUSTER_PLAN_CREATE),\n delete: permissions.includes(ConsolePermissions.CLUSTER_PLAN_DELETE),\n type: {\n create: permissions.includes(\n ConsolePermissions.CLUSTER_PLAN_TYPE_CREATE,\n ),\n modify: permissions.includes(\n ConsolePermissions.CLUSTER_PLAN_TYPE_MODIFY,\n ),\n delete: permissions.includes(\n ConsolePermissions.CLUSTER_PLAN_TYPE_DELETE,\n ),\n forceDelete: permissions.includes(\n ConsolePermissions.CLUSTER_PLAN_TYPE_FORCE_DELETE,\n ),\n },\n migrate: permissions.includes(ConsolePermissions.CLUSTER_PLAN_MIGRATE),\n modify: permissions.includes(ConsolePermissions.CLUSTER_PLAN_CAN_MODIFY),\n },\n features: {\n newHome: permissions.includes(ConsolePermissions.FEATURE_NEW_HOME),\n templatePicker: permissions.includes(\n ConsolePermissions.FEATURE_TEMPLATE_PICKER,\n ),\n userSettings: permissions.includes(ConsolePermissions.USER_SETTINGS),\n debug: permissions.includes(ConsolePermissions.DEBUG),\n },\n m2m: {\n updateCrd: permissions.includes(ConsolePermissions.M2M_UPDATE_CRD),\n signup: permissions.includes(ConsolePermissions.M2M_SIGNUP),\n triggerAlert: permissions.includes(ConsolePermissions.M2M_TRIGGER_ALERT),\n deleteOrgClusters: permissions.includes(\n ConsolePermissions.M2M_DELETE_ORG_CLUSTERS,\n ),\n updateOrgClusters: permissions.includes(\n ConsolePermissions.M2M_UPDATE_ORG_CLUSTERS,\n ),\n addUsageMetrics: permissions.includes(\n ConsolePermissions.M2M_ADD_CLUSTER_USAGE_METRICS,\n ),\n sendSseEvent: permissions.includes(ConsolePermissions.M2M_SEND_SSE_EVENT),\n external: {\n internalClient: permissions.includes(\n ConsolePermissions.M2M_EXTERNAL_INTERNAL_CLIENT,\n ),\n },\n fetchMigrationData: permissions.includes(\n ConsolePermissions.M2M_FETCH_MIGRATION_DATA,\n ),\n manageGenerationUpgradePath: permissions.includes(\n ConsolePermissions.M2M_MANAGE_GENERATION_UPGRADE_PATH,\n ),\n approvals: permissions.includes(ConsolePermissions.M2M_CONTROL_APPROVALS),\n controlAgentStatus: permissions.includes(\n ConsolePermissions.M2M_CONTROL_AGENT_STATUS,\n ),\n controlAgentGrants: permissions.includes(\n ConsolePermissions.M2M_CONTROL_AGENT_GRANTS,\n ),\n readClusterList: permissions.includes(\n ConsolePermissions.M2M_READ_CLUSTER_LIST,\n ),\n readApiClientStats: permissions.includes(\n ConsolePermissions.M2M_READ_API_CLIENT_STATS,\n ),\n },\n }\n return newFeatures\n}\n\n/**\n * Flattens a feature tree into the dotted keys of the Control session.\n *\n * `buildSession` in accounts-backend writes the session with exactly this\n * shape, under the prefixes `` (accounts), `console` and `notifications`.\n */\nfunction flattenFeatureBooleans(\n value: unknown,\n prefix = '',\n): Record<string, boolean> {\n const out: Record<string, boolean> = {}\n if (!value || typeof value !== 'object') {\n return out\n }\n for (const [key, entry] of Object.entries(value as Record<string, unknown>)) {\n const flatKey = prefix ? `${prefix}.${key}` : key\n if (typeof entry === 'boolean') {\n out[flatKey] = entry\n } else if (entry && typeof entry === 'object') {\n Object.assign(out, flattenFeatureBooleans(entry, flatKey))\n }\n }\n return out\n}\n\n/**\n * The session keys that ONE raw Auth0 permission turns on.\n *\n * The Control session holds a flat record of feature booleans, such as\n * `admin.extendTrial` and `console.clusters.canUpgradeGenerationYolo`. An\n * approval use case names the raw Auth0 short code instead, such as `aaet`,\n * because that is what the token carries and what a backend compares.\n *\n * This function bridges the two, and it bridges them by RUNNING the same\n * mappers that build the session. A hand-written table of code to key would be\n * a third copy of the permission model, and a code that gained a key would\n * silently stop gating anything in the browser.\n *\n * It answers an array, because one code can turn on more than one key. An\n * unknown code answers an empty array, and the caller decides what that means.\n *\n * The answer is CACHED, because the work is three feature trees and a flatten\n * of each one. `ApprovalActorView.has` of the browser runs this, and the rules\n * call `has` for every row of the queue: a page of 2000 requests turned one\n * cheap question into thousands of tree builds. The answer of a code never\n * changes inside one bundle, so the cache needs no invalidation, and the keys\n * are the permission codes of the use cases, which is a short list.\n *\n * The answer is `readonly`, and frozen, because every caller of one code gets\n * the SAME array: a caller that sorted or pushed in place would change what\n * the next reader of that code sees.\n */\nconst keysByPermissionCode = new Map<string, readonly string[]>()\n\nexport function sessionPermissionKeysFor(\n permissionCode: string,\n): readonly string[] {\n const cached = keysByPermissionCode.get(permissionCode)\n if (cached) {\n return cached\n }\n const answer = Object.freeze(buildSessionPermissionKeys(permissionCode))\n keysByPermissionCode.set(permissionCode, answer)\n return answer\n}\n\nfunction buildSessionPermissionKeys(permissionCode: string): string[] {\n const trees: [unknown, string][] = [\n [accountsUserFeaturesFromPermissions([permissionCode]), ''],\n [consoleUserFeaturesFromPermissions([permissionCode]), 'console'],\n [\n NotificationPermissions.userFeaturesFromPermissions([permissionCode]),\n 'notifications',\n ],\n ]\n const keys: string[] = []\n for (const [tree, prefix] of trees) {\n for (const [key, on] of Object.entries(\n flattenFeatureBooleans(tree, prefix),\n )) {\n if (on) {\n keys.push(key)\n }\n }\n }\n return keys\n}\n\n/**\n * Reports whether a Control session holds one raw Auth0 permission.\n *\n * It is what `ApprovalActorView.has` runs in the browser. An unknown code\n * answers false: a permission that nothing maps is a permission that nobody\n * holds, and the alternative would open a button that the backend refuses.\n */\nexport function sessionHasPermission(\n sessionPermissions: Record<string, boolean>,\n permissionCode: string,\n): boolean {\n return sessionPermissionKeysFor(permissionCode).some(\n (key) => sessionPermissions[key] === true,\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 { AccountsPermissions } from './accounts.permissions.js'\nimport { AuditLoggerPermissions } from './auditlogger.permissions.js'\nimport { ConsolePermissions } from './console.permissions.js'\nimport { NotificationPermissions } from './notification.permissions.js'\n\nexport function accountsUserFeaturesFromPermissions(permissions: string[]) {\n const newFeatures: AccountsPermissions.Features = {\n admin: {\n readAll: permissions.includes(AccountsPermissions.READ_ALL),\n createOrg: permissions.includes(AccountsPermissions.CREATE_ORG),\n changeOrgName: permissions.includes(AccountsPermissions.CHANGE_ORG_NAME),\n\n deleteOrg: permissions.includes(AccountsPermissions.DELETE_ORG),\n resetTokenVerification: permissions.includes(\n AccountsPermissions.RESET_TOKEN_VERIFICATION,\n ),\n deleteUser: permissions.includes(AccountsPermissions.DELETE_USER),\n deleteNotActivatedUser: permissions.includes(\n AccountsPermissions.DELETE_NOT_ACTIVATED_USER,\n ),\n addToOrg: permissions.includes(AccountsPermissions.ADD_TO_ORG),\n removeFromOrg: permissions.includes(AccountsPermissions.REMOVE_FROM_ORG),\n setDefaultOrg: permissions.includes(AccountsPermissions.SET_DEFAULT_ORG),\n cancelInvite: permissions.includes(AccountsPermissions.CANCEL_INVITE),\n changeRole: permissions.includes(AccountsPermissions.CHANGE_ROLE),\n addSafeRole: permissions.includes(AccountsPermissions.CHANGE_SAFE_ROLE),\n changeOrgMemberRole: permissions.includes(\n AccountsPermissions.CHANGE_ORG_MEMBER_ROLE,\n ),\n deleteClusters: permissions.includes(\n ConsolePermissions.CLUSTERS_DELETE_CLUSTER,\n ),\n extendTrial: permissions.includes(AccountsPermissions.EXTEND_TRIAL),\n invalidateToken: permissions.includes(\n AccountsPermissions.INVALIDATE_TOKEN,\n ),\n cancelPaid: permissions.includes(AccountsPermissions.ORG_CANCEL_PAID),\n searchForOrgs: permissions.includes(\n ConsolePermissions.CLUSTER_PLAN_SEE_ALL,\n ),\n readAudit: permissions.includes(AuditLoggerPermissions.READ),\n modifyClusterPlanTypeReservations: permissions.includes(\n AccountsPermissions.MODIFY_CLUSTER_PLAN_TYPE_RESERVATIONS,\n ),\n mayChangeOrgLimits: permissions.includes(\n AccountsPermissions.ORG_MAY_CHANGE_LIMITS,\n ),\n mayChangeGenerationWhiteList: permissions.includes(\n AccountsPermissions.ORG_MAY_CHANGE_GENERATION_WHITELIST,\n ),\n sql: permissions.includes(AccountsPermissions.ADMIN_SQL),\n modelerDeleteUser: permissions.includes(\n AccountsPermissions.MODELER_DELETE_USER,\n ),\n unblockUser: permissions.includes(AccountsPermissions.UNBLOCK_USER),\n god: {\n triggerCrons: permissions.includes(AccountsPermissions.GOD_CRON),\n forceSalesPlanOnOrg: permissions.includes(\n AccountsPermissions.FORCE_SALES_PLAN_ON_ORG,\n ),\n changeSignupSpamPatterns: permissions.includes(\n AccountsPermissions.GOD_SIGNUP_SPAM_PATTERNS,\n ),\n purgeUsers: permissions.includes(AccountsPermissions.GOD_PURGE_USERS),\n updateUserMetadata: permissions.includes(\n AccountsPermissions.GOD_UPDATE_USER_METADATA,\n ),\n },\n bot: permissions.includes(AccountsPermissions.BOT),\n changeEmail: permissions.includes(AccountsPermissions.ADMIN_CHANGE_EMAIL),\n changeUserName: permissions.includes(\n AccountsPermissions.ADMIN_CHANGE_USER_NAME,\n ),\n },\n salesPlan: {\n create: permissions.includes(AccountsPermissions.SALES_PLAN_CREATE),\n modify: permissions.includes(AccountsPermissions.SALES_PLAN_MODIFY),\n forceModify: permissions.includes(\n AccountsPermissions.SALES_PLAN_FORCE_MODIFY,\n ),\n switch: permissions.includes(AccountsPermissions.SALES_PLAN_SWITCH),\n delete: permissions.includes(AccountsPermissions.SALES_PLAN_DELETE),\n godDelete: permissions.includes(\n AccountsPermissions.SALES_PLAN_DELETE_AS_GOD,\n ),\n },\n enterprise: {\n org: {\n convert: permissions.includes(\n AccountsPermissions.ENTERPRISE_ORG_CONVERT,\n ),\n modify: permissions.includes(AccountsPermissions.ENTERPRISE_ORG_MODIFY),\n modifyStartDate: permissions.includes(\n AccountsPermissions.ENTERPRISE_ORG_MODIFY_START_DATE,\n ),\n },\n },\n trial: {\n convertToInNegotiation: permissions.includes(\n AccountsPermissions.TRIAL_TO_IN_NEGOTIATION_CONVERT,\n ),\n },\n supportAgent: {\n removeAgentsFromOrg: permissions.includes(\n AccountsPermissions.SUPPORT_AGENT_REMOVE_AGENTS_FROM_ORG,\n ),\n seeOrgMemberships: permissions.includes(\n AccountsPermissions.SUPPORT_AGENT_SEE_ORG_MEMBERSHIPS,\n ),\n addAgentsToOrg: permissions.includes(\n AccountsPermissions.SUPPORT_AGENT_ADD_TO_ORG,\n ),\n },\n m2m: {\n salesplan: {\n get: permissions.includes(AccountsPermissions.M2M_SALESPLAN_GET),\n switch: permissions.includes(AccountsPermissions.M2M_SALESPLAN_SWITCH),\n },\n orgList: permissions.includes(AccountsPermissions.M2M_ORG_LIST),\n fleetHostingCost: permissions.includes(\n AccountsPermissions.M2M_FLEET_HOSTING_COST_GET,\n ),\n activeUsers: permissions.includes(\n AccountsPermissions.M2M_ACTIVE_USERS_GET,\n ),\n fetchMigrationData: permissions.includes(\n ConsolePermissions.M2M_FETCH_MIGRATION_DATA,\n ),\n approvals: permissions.includes(ConsolePermissions.M2M_CONTROL_APPROVALS),\n },\n externalM2m: {\n org: {\n members: {\n get: permissions.includes(\n AccountsPermissions.EXTERNAL_M2M_GET_ORG_MEMBERS,\n ),\n },\n search: permissions.includes(\n AccountsPermissions.EXTERNAL_M2M_SEARCH_ORGS,\n ),\n },\n // eslint-disable-next-line id-length\n qa: {\n org: {\n create: permissions.includes(\n AccountsPermissions.EXTERNAL_M2M_QA_ORG_CREATE,\n ),\n },\n },\n offboarding: {\n camundi: permissions.includes(\n AccountsPermissions.EXTERNAL_M2M_OFFBOARD_CAMUNDI,\n ),\n },\n },\n auth0: {\n connections: {\n create: permissions.includes(\n AccountsPermissions.ADMIN_AUTH0_CONNECTIONS_CREATE,\n ),\n read: permissions.includes(\n AccountsPermissions.ADMIN_AUTH0_CONNECTIONS_READ,\n ),\n update: permissions.includes(\n AccountsPermissions.ADMIN_AUTH0_CONNECTIONS_UPDATE,\n ),\n delete: permissions.includes(\n AccountsPermissions.ADMIN_AUTH0_CONNECTIONS_DELETE,\n ),\n },\n },\n notifications: {\n global: {\n read: permissions.includes(NotificationPermissions.READ_GLOBAL),\n delete: permissions.includes(NotificationPermissions.DELETE_GLOBAL),\n create: permissions.includes(NotificationPermissions.CREATE_GLOBAL),\n },\n },\n earlyAccessFeatures: {\n read: permissions.includes(\n AccountsPermissions.ADMIN_EARLY_ACCESS_FEATURES_READ,\n ),\n create: permissions.includes(\n AccountsPermissions.ADMIN_EARLY_ACCESS_FEATURES_CREATE,\n ),\n delete: permissions.includes(\n AccountsPermissions.ADMIN_EARLY_ACCESS_FEATURES_DELETE,\n ),\n update: permissions.includes(\n AccountsPermissions.ADMIN_EARLY_ACCESS_FEATURES_UPDATE,\n ),\n },\n pdfWatermark: {\n read: permissions.includes(AccountsPermissions.PDF_WATERMARK_READ),\n write: permissions.includes(AccountsPermissions.PDF_WATERMARK_WRITE),\n },\n featureFlags: {\n write: permissions.includes(\n AccountsPermissions.ADMIN_FEATURE_FLAGS_WRITE,\n ),\n request: permissions.includes(\n AccountsPermissions.ADMIN_FEATURE_FLAGS_REQUEST,\n ),\n },\n agentTokens: {\n manageOwn: permissions.includes(\n AccountsPermissions.CONTROL_AGENT_TOKENS_MANAGE_OWN,\n ),\n admin: permissions.includes(\n AccountsPermissions.CONTROL_AGENT_TOKENS_ADMIN,\n ),\n },\n }\n return newFeatures\n}\n\nexport function consoleUserFeaturesFromPermissions(permissions: string[]) {\n const newFeatures: ConsolePermissions.Features = {\n apiClient: {\n read: permissions.includes(ConsolePermissions.APICLIENT_READ),\n delete: permissions.includes(ConsolePermissions.APICLIENT_DELETE),\n },\n multiCluster: {\n admin: permissions.includes(ConsolePermissions.MULTICLUSTER_ADMIN),\n },\n multiGen: {\n admin: {\n see: permissions.includes(\n ConsolePermissions.CHANNELS_AND_GENERATIONS_ADMIN_SEE,\n ),\n modify: permissions.includes(\n ConsolePermissions.CHANNELS_AND_GENERATIONS_ADMIN,\n ),\n patchExistingChannel: permissions.includes(\n ConsolePermissions.CHANNELS_AND_GENERATIONS_ADMIN_PATCH_EXISTING_CHANNEL,\n ),\n migrate: permissions.includes(\n ConsolePermissions.CHANNELS_AND_GENERATIONS_ADMIN_MIGRATE,\n ),\n deleteAllClustersOfGeneration: permissions.includes(\n ConsolePermissions.CHANNELS_AND_GENERATIONS_ADMIN_DELETE_ALL_CLUSTERS,\n ),\n },\n releaseTrain: {\n publish: permissions.includes(ConsolePermissions.RELEASE_TRAIN_PUBLISH),\n },\n },\n clusters: {\n canReadAllClusterInfo: permissions.includes(\n ConsolePermissions.CLUSTERS_READALLCLUSTERINFO,\n ),\n canDeleteAllClusters: permissions.includes(\n ConsolePermissions.CLUSTERS_DELETE_CLUSTER,\n ),\n canMoveToOtherOrg: permissions.includes(\n ConsolePermissions.CLUSTERS_CAN_MOVE_TO_OTHER_ORG,\n ),\n createOnBehalf: permissions.includes(\n ConsolePermissions.CLUSTER_CREATE_ON_BEHALF,\n ),\n canSendToSleep: permissions.includes(\n ConsolePermissions.CLUSTERS_CAN_SEND_TO_SLEEP,\n ),\n canCreateInternalBackup: permissions.includes(\n ConsolePermissions.CLUSTERS_CAN_CREATE_INTERNAL_BACKUP,\n ),\n canUpdateClusterPlanType: permissions.includes(\n ConsolePermissions.CLUSTERS_CAN_UPDATE_CLUSTERPLANTYPE,\n ),\n canOverrideEnvVars: permissions.includes(\n ConsolePermissions.CLUSTERS_CAN_OVERRIDE_ENV_VARS,\n ),\n canCreateModificationConfig: permissions.includes(\n ConsolePermissions.CLUSTERS_CAN_CREATE_MODIFICATION_CONFIG,\n ),\n canUpgradeGeneration: permissions.includes(\n ConsolePermissions.CLUSTERS_CAN_UPDATE_GENERATION,\n ),\n canUpgradeGenerationYolo: permissions.includes(\n ConsolePermissions.CLUSTERS_CAN_UPDATE_GENERATION_YOLO,\n ),\n canUpdateOptionalTelemetry: permissions.includes(\n ConsolePermissions.CLUSTERS_CAN_UPDATE_OPTIONAL_TELEMETRY,\n ),\n canUpdateZeebeRebalancing: permissions.includes(\n ConsolePermissions.CLUSTERS_CAN_UPDATE_ZEEBE_REBALANCING,\n ),\n },\n clusterPlan: {\n seeAll: permissions.includes(ConsolePermissions.CLUSTER_PLAN_SEE_ALL),\n create: permissions.includes(ConsolePermissions.CLUSTER_PLAN_CREATE),\n delete: permissions.includes(ConsolePermissions.CLUSTER_PLAN_DELETE),\n type: {\n create: permissions.includes(\n ConsolePermissions.CLUSTER_PLAN_TYPE_CREATE,\n ),\n modify: permissions.includes(\n ConsolePermissions.CLUSTER_PLAN_TYPE_MODIFY,\n ),\n delete: permissions.includes(\n ConsolePermissions.CLUSTER_PLAN_TYPE_DELETE,\n ),\n forceDelete: permissions.includes(\n ConsolePermissions.CLUSTER_PLAN_TYPE_FORCE_DELETE,\n ),\n },\n migrate: permissions.includes(ConsolePermissions.CLUSTER_PLAN_MIGRATE),\n modify: permissions.includes(ConsolePermissions.CLUSTER_PLAN_CAN_MODIFY),\n },\n features: {\n newHome: permissions.includes(ConsolePermissions.FEATURE_NEW_HOME),\n templatePicker: permissions.includes(\n ConsolePermissions.FEATURE_TEMPLATE_PICKER,\n ),\n userSettings: permissions.includes(ConsolePermissions.USER_SETTINGS),\n debug: permissions.includes(ConsolePermissions.DEBUG),\n },\n m2m: {\n updateCrd: permissions.includes(ConsolePermissions.M2M_UPDATE_CRD),\n signup: permissions.includes(ConsolePermissions.M2M_SIGNUP),\n triggerAlert: permissions.includes(ConsolePermissions.M2M_TRIGGER_ALERT),\n deleteOrgClusters: permissions.includes(\n ConsolePermissions.M2M_DELETE_ORG_CLUSTERS,\n ),\n updateOrgClusters: permissions.includes(\n ConsolePermissions.M2M_UPDATE_ORG_CLUSTERS,\n ),\n addUsageMetrics: permissions.includes(\n ConsolePermissions.M2M_ADD_CLUSTER_USAGE_METRICS,\n ),\n sendSseEvent: permissions.includes(ConsolePermissions.M2M_SEND_SSE_EVENT),\n external: {\n internalClient: permissions.includes(\n ConsolePermissions.M2M_EXTERNAL_INTERNAL_CLIENT,\n ),\n },\n fetchMigrationData: permissions.includes(\n ConsolePermissions.M2M_FETCH_MIGRATION_DATA,\n ),\n manageGenerationUpgradePath: permissions.includes(\n ConsolePermissions.M2M_MANAGE_GENERATION_UPGRADE_PATH,\n ),\n approvals: permissions.includes(ConsolePermissions.M2M_CONTROL_APPROVALS),\n controlAgentStatus: permissions.includes(\n ConsolePermissions.M2M_CONTROL_AGENT_STATUS,\n ),\n controlAgentGrants: permissions.includes(\n ConsolePermissions.M2M_CONTROL_AGENT_GRANTS,\n ),\n readClusterList: permissions.includes(\n ConsolePermissions.M2M_READ_CLUSTER_LIST,\n ),\n readApiClientStats: permissions.includes(\n ConsolePermissions.M2M_READ_API_CLIENT_STATS,\n ),\n },\n }\n return newFeatures\n}\n\n/**\n * Flattens a feature tree into the dotted keys of the Control session.\n *\n * `buildSession` in accounts-backend writes the session with exactly this\n * shape, under the prefixes `` (accounts), `console` and `notifications`.\n */\nfunction flattenFeatureBooleans(\n value: unknown,\n prefix = '',\n): Record<string, boolean> {\n const out: Record<string, boolean> = {}\n if (!value || typeof value !== 'object') {\n return out\n }\n for (const [key, entry] of Object.entries(value as Record<string, unknown>)) {\n const flatKey = prefix ? `${prefix}.${key}` : key\n if (typeof entry === 'boolean') {\n out[flatKey] = entry\n } else if (entry && typeof entry === 'object') {\n Object.assign(out, flattenFeatureBooleans(entry, flatKey))\n }\n }\n return out\n}\n\n/**\n * The session keys that ONE raw Auth0 permission turns on.\n *\n * The Control session holds a flat record of feature booleans, such as\n * `admin.extendTrial` and `console.clusters.canUpgradeGenerationYolo`. An\n * approval use case names the raw Auth0 short code instead, such as `aaet`,\n * because that is what the token carries and what a backend compares.\n *\n * This function bridges the two, and it bridges them by RUNNING the same\n * mappers that build the session. A hand-written table of code to key would be\n * a third copy of the permission model, and a code that gained a key would\n * silently stop gating anything in the browser.\n *\n * It answers an array, because one code can turn on more than one key. An\n * unknown code answers an empty array, and the caller decides what that means.\n *\n * The answer is CACHED, because the work is three feature trees and a flatten\n * of each one. `ApprovalActorView.has` of the browser runs this, and the rules\n * call `has` for every row of the queue: a page of 2000 requests turned one\n * cheap question into thousands of tree builds. The answer of a code never\n * changes inside one bundle, so the cache needs no invalidation, and the keys\n * are the permission codes of the use cases, which is a short list.\n *\n * The answer is `readonly`, and frozen, because every caller of one code gets\n * the SAME array: a caller that sorted or pushed in place would change what\n * the next reader of that code sees.\n */\nconst keysByPermissionCode = new Map<string, readonly string[]>()\n\nexport function sessionPermissionKeysFor(\n permissionCode: string,\n): readonly string[] {\n const cached = keysByPermissionCode.get(permissionCode)\n if (cached) {\n return cached\n }\n const answer = Object.freeze(buildSessionPermissionKeys(permissionCode))\n keysByPermissionCode.set(permissionCode, answer)\n return answer\n}\n\nfunction buildSessionPermissionKeys(permissionCode: string): string[] {\n const trees: [unknown, string][] = [\n [accountsUserFeaturesFromPermissions([permissionCode]), ''],\n [consoleUserFeaturesFromPermissions([permissionCode]), 'console'],\n [\n NotificationPermissions.userFeaturesFromPermissions([permissionCode]),\n 'notifications',\n ],\n ]\n const keys: string[] = []\n for (const [tree, prefix] of trees) {\n for (const [key, on] of Object.entries(\n flattenFeatureBooleans(tree, prefix),\n )) {\n if (on) {\n keys.push(key)\n }\n }\n }\n return keys\n}\n\n/**\n * Reports whether a Control session holds one raw Auth0 permission.\n *\n * It is what `ApprovalActorView.has` runs in the browser. An unknown code\n * answers false: a permission that nothing maps is a permission that nobody\n * holds, and the alternative would open a button that the backend refuses.\n */\nexport function sessionHasPermission(\n sessionPermissions: Record<string, boolean>,\n permissionCode: string,\n): boolean {\n return sessionPermissionKeysFor(permissionCode).some(\n (key) => sessionPermissions[key] === true,\n )\n}\n"],
|
|
5
|
+
"mappings": "AAMA,SAAS,2BAA2B;AACpC,SAAS,8BAA8B;AACvC,SAAS,0BAA0B;AACnC,SAAS,+BAA+B;AAEjC,SAAS,oCAAoC,aAAuB;AACzE,QAAM,cAA4C;AAAA,IAChD,OAAO;AAAA,MACL,SAAS,YAAY,SAAS,oBAAoB,QAAQ;AAAA,MAC1D,WAAW,YAAY,SAAS,oBAAoB,UAAU;AAAA,MAC9D,eAAe,YAAY,SAAS,oBAAoB,eAAe;AAAA,MAEvE,WAAW,YAAY,SAAS,oBAAoB,UAAU;AAAA,MAC9D,wBAAwB,YAAY;AAAA,QAClC,oBAAoB;AAAA,MACtB;AAAA,MACA,YAAY,YAAY,SAAS,oBAAoB,WAAW;AAAA,MAChE,wBAAwB,YAAY;AAAA,QAClC,oBAAoB;AAAA,MACtB;AAAA,MACA,UAAU,YAAY,SAAS,oBAAoB,UAAU;AAAA,MAC7D,eAAe,YAAY,SAAS,oBAAoB,eAAe;AAAA,MACvE,eAAe,YAAY,SAAS,oBAAoB,eAAe;AAAA,MACvE,cAAc,YAAY,SAAS,oBAAoB,aAAa;AAAA,MACpE,YAAY,YAAY,SAAS,oBAAoB,WAAW;AAAA,MAChE,aAAa,YAAY,SAAS,oBAAoB,gBAAgB;AAAA,MACtE,qBAAqB,YAAY;AAAA,QAC/B,oBAAoB;AAAA,MACtB;AAAA,MACA,gBAAgB,YAAY;AAAA,QAC1B,mBAAmB;AAAA,MACrB;AAAA,MACA,aAAa,YAAY,SAAS,oBAAoB,YAAY;AAAA,MAClE,iBAAiB,YAAY;AAAA,QAC3B,oBAAoB;AAAA,MACtB;AAAA,MACA,YAAY,YAAY,SAAS,oBAAoB,eAAe;AAAA,MACpE,eAAe,YAAY;AAAA,QACzB,mBAAmB;AAAA,MACrB;AAAA,MACA,WAAW,YAAY,SAAS,uBAAuB,IAAI;AAAA,MAC3D,mCAAmC,YAAY;AAAA,QAC7C,oBAAoB;AAAA,MACtB;AAAA,MACA,oBAAoB,YAAY;AAAA,QAC9B,oBAAoB;AAAA,MACtB;AAAA,MACA,8BAA8B,YAAY;AAAA,QACxC,oBAAoB;AAAA,MACtB;AAAA,MACA,KAAK,YAAY,SAAS,oBAAoB,SAAS;AAAA,MACvD,mBAAmB,YAAY;AAAA,QAC7B,oBAAoB;AAAA,MACtB;AAAA,MACA,aAAa,YAAY,SAAS,oBAAoB,YAAY;AAAA,MAClE,KAAK;AAAA,QACH,cAAc,YAAY,SAAS,oBAAoB,QAAQ;AAAA,QAC/D,qBAAqB,YAAY;AAAA,UAC/B,oBAAoB;AAAA,QACtB;AAAA,QACA,0BAA0B,YAAY;AAAA,UACpC,oBAAoB;AAAA,QACtB;AAAA,QACA,YAAY,YAAY,SAAS,oBAAoB,eAAe;AAAA,QACpE,oBAAoB,YAAY;AAAA,UAC9B,oBAAoB;AAAA,QACtB;AAAA,MACF;AAAA,MACA,KAAK,YAAY,SAAS,oBAAoB,GAAG;AAAA,MACjD,aAAa,YAAY,SAAS,oBAAoB,kBAAkB;AAAA,MACxE,gBAAgB,YAAY;AAAA,QAC1B,oBAAoB;AAAA,MACtB;AAAA,IACF;AAAA,IACA,WAAW;AAAA,MACT,QAAQ,YAAY,SAAS,oBAAoB,iBAAiB;AAAA,MAClE,QAAQ,YAAY,SAAS,oBAAoB,iBAAiB;AAAA,MAClE,aAAa,YAAY;AAAA,QACvB,oBAAoB;AAAA,MACtB;AAAA,MACA,QAAQ,YAAY,SAAS,oBAAoB,iBAAiB;AAAA,MAClE,QAAQ,YAAY,SAAS,oBAAoB,iBAAiB;AAAA,MAClE,WAAW,YAAY;AAAA,QACrB,oBAAoB;AAAA,MACtB;AAAA,IACF;AAAA,IACA,YAAY;AAAA,MACV,KAAK;AAAA,QACH,SAAS,YAAY;AAAA,UACnB,oBAAoB;AAAA,QACtB;AAAA,QACA,QAAQ,YAAY,SAAS,oBAAoB,qBAAqB;AAAA,QACtE,iBAAiB,YAAY;AAAA,UAC3B,oBAAoB;AAAA,QACtB;AAAA,MACF;AAAA,IACF;AAAA,IACA,OAAO;AAAA,MACL,wBAAwB,YAAY;AAAA,QAClC,oBAAoB;AAAA,MACtB;AAAA,IACF;AAAA,IACA,cAAc;AAAA,MACZ,qBAAqB,YAAY;AAAA,QAC/B,oBAAoB;AAAA,MACtB;AAAA,MACA,mBAAmB,YAAY;AAAA,QAC7B,oBAAoB;AAAA,MACtB;AAAA,MACA,gBAAgB,YAAY;AAAA,QAC1B,oBAAoB;AAAA,MACtB;AAAA,IACF;AAAA,IACA,KAAK;AAAA,MACH,WAAW;AAAA,QACT,KAAK,YAAY,SAAS,oBAAoB,iBAAiB;AAAA,QAC/D,QAAQ,YAAY,SAAS,oBAAoB,oBAAoB;AAAA,MACvE;AAAA,MACA,SAAS,YAAY,SAAS,oBAAoB,YAAY;AAAA,MAC9D,kBAAkB,YAAY;AAAA,QAC5B,oBAAoB;AAAA,MACtB;AAAA,MACA,aAAa,YAAY;AAAA,QACvB,oBAAoB;AAAA,MACtB;AAAA,MACA,oBAAoB,YAAY;AAAA,QAC9B,mBAAmB;AAAA,MACrB;AAAA,MACA,WAAW,YAAY,SAAS,mBAAmB,qBAAqB;AAAA,IAC1E;AAAA,IACA,aAAa;AAAA,MACX,KAAK;AAAA,QACH,SAAS;AAAA,UACP,KAAK,YAAY;AAAA,YACf,oBAAoB;AAAA,UACtB;AAAA,QACF;AAAA,QACA,QAAQ,YAAY;AAAA,UAClB,oBAAoB;AAAA,QACtB;AAAA,MACF;AAAA;AAAA,MAEA,IAAI;AAAA,QACF,KAAK;AAAA,UACH,QAAQ,YAAY;AAAA,YAClB,oBAAoB;AAAA,UACtB;AAAA,QACF;AAAA,MACF;AAAA,MACA,aAAa;AAAA,QACX,SAAS,YAAY;AAAA,UACnB,oBAAoB;AAAA,QACtB;AAAA,MACF;AAAA,IACF;AAAA,IACA,OAAO;AAAA,MACL,aAAa;AAAA,QACX,QAAQ,YAAY;AAAA,UAClB,oBAAoB;AAAA,QACtB;AAAA,QACA,MAAM,YAAY;AAAA,UAChB,oBAAoB;AAAA,QACtB;AAAA,QACA,QAAQ,YAAY;AAAA,UAClB,oBAAoB;AAAA,QACtB;AAAA,QACA,QAAQ,YAAY;AAAA,UAClB,oBAAoB;AAAA,QACtB;AAAA,MACF;AAAA,IACF;AAAA,IACA,eAAe;AAAA,MACb,QAAQ;AAAA,QACN,MAAM,YAAY,SAAS,wBAAwB,WAAW;AAAA,QAC9D,QAAQ,YAAY,SAAS,wBAAwB,aAAa;AAAA,QAClE,QAAQ,YAAY,SAAS,wBAAwB,aAAa;AAAA,MACpE;AAAA,IACF;AAAA,IACA,qBAAqB;AAAA,MACnB,MAAM,YAAY;AAAA,QAChB,oBAAoB;AAAA,MACtB;AAAA,MACA,QAAQ,YAAY;AAAA,QAClB,oBAAoB;AAAA,MACtB;AAAA,MACA,QAAQ,YAAY;AAAA,QAClB,oBAAoB;AAAA,MACtB;AAAA,MACA,QAAQ,YAAY;AAAA,QAClB,oBAAoB;AAAA,MACtB;AAAA,IACF;AAAA,IACA,cAAc;AAAA,MACZ,MAAM,YAAY,SAAS,oBAAoB,kBAAkB;AAAA,MACjE,OAAO,YAAY,SAAS,oBAAoB,mBAAmB;AAAA,IACrE;AAAA,IACA,cAAc;AAAA,MACZ,OAAO,YAAY;AAAA,QACjB,oBAAoB;AAAA,MACtB;AAAA,MACA,SAAS,YAAY;AAAA,QACnB,oBAAoB;AAAA,MACtB;AAAA,IACF;AAAA,IACA,aAAa;AAAA,MACX,WAAW,YAAY;AAAA,QACrB,oBAAoB;AAAA,MACtB;AAAA,MACA,OAAO,YAAY;AAAA,QACjB,oBAAoB;AAAA,MACtB;AAAA,IACF;AAAA,EACF;AACA,SAAO;AACT;AAEO,SAAS,mCAAmC,aAAuB;AACxE,QAAM,cAA2C;AAAA,IAC/C,WAAW;AAAA,MACT,MAAM,YAAY,SAAS,mBAAmB,cAAc;AAAA,MAC5D,QAAQ,YAAY,SAAS,mBAAmB,gBAAgB;AAAA,IAClE;AAAA,IACA,cAAc;AAAA,MACZ,OAAO,YAAY,SAAS,mBAAmB,kBAAkB;AAAA,IACnE;AAAA,IACA,UAAU;AAAA,MACR,OAAO;AAAA,QACL,KAAK,YAAY;AAAA,UACf,mBAAmB;AAAA,QACrB;AAAA,QACA,QAAQ,YAAY;AAAA,UAClB,mBAAmB;AAAA,QACrB;AAAA,QACA,sBAAsB,YAAY;AAAA,UAChC,mBAAmB;AAAA,QACrB;AAAA,QACA,SAAS,YAAY;AAAA,UACnB,mBAAmB;AAAA,QACrB;AAAA,QACA,+BAA+B,YAAY;AAAA,UACzC,mBAAmB;AAAA,QACrB;AAAA,MACF;AAAA,MACA,cAAc;AAAA,QACZ,SAAS,YAAY,SAAS,mBAAmB,qBAAqB;AAAA,MACxE;AAAA,IACF;AAAA,IACA,UAAU;AAAA,MACR,uBAAuB,YAAY;AAAA,QACjC,mBAAmB;AAAA,MACrB;AAAA,MACA,sBAAsB,YAAY;AAAA,QAChC,mBAAmB;AAAA,MACrB;AAAA,MACA,mBAAmB,YAAY;AAAA,QAC7B,mBAAmB;AAAA,MACrB;AAAA,MACA,gBAAgB,YAAY;AAAA,QAC1B,mBAAmB;AAAA,MACrB;AAAA,MACA,gBAAgB,YAAY;AAAA,QAC1B,mBAAmB;AAAA,MACrB;AAAA,MACA,yBAAyB,YAAY;AAAA,QACnC,mBAAmB;AAAA,MACrB;AAAA,MACA,0BAA0B,YAAY;AAAA,QACpC,mBAAmB;AAAA,MACrB;AAAA,MACA,oBAAoB,YAAY;AAAA,QAC9B,mBAAmB;AAAA,MACrB;AAAA,MACA,6BAA6B,YAAY;AAAA,QACvC,mBAAmB;AAAA,MACrB;AAAA,MACA,sBAAsB,YAAY;AAAA,QAChC,mBAAmB;AAAA,MACrB;AAAA,MACA,0BAA0B,YAAY;AAAA,QACpC,mBAAmB;AAAA,MACrB;AAAA,MACA,4BAA4B,YAAY;AAAA,QACtC,mBAAmB;AAAA,MACrB;AAAA,MACA,2BAA2B,YAAY;AAAA,QACrC,mBAAmB;AAAA,MACrB;AAAA,IACF;AAAA,IACA,aAAa;AAAA,MACX,QAAQ,YAAY,SAAS,mBAAmB,oBAAoB;AAAA,MACpE,QAAQ,YAAY,SAAS,mBAAmB,mBAAmB;AAAA,MACnE,QAAQ,YAAY,SAAS,mBAAmB,mBAAmB;AAAA,MACnE,MAAM;AAAA,QACJ,QAAQ,YAAY;AAAA,UAClB,mBAAmB;AAAA,QACrB;AAAA,QACA,QAAQ,YAAY;AAAA,UAClB,mBAAmB;AAAA,QACrB;AAAA,QACA,QAAQ,YAAY;AAAA,UAClB,mBAAmB;AAAA,QACrB;AAAA,QACA,aAAa,YAAY;AAAA,UACvB,mBAAmB;AAAA,QACrB;AAAA,MACF;AAAA,MACA,SAAS,YAAY,SAAS,mBAAmB,oBAAoB;AAAA,MACrE,QAAQ,YAAY,SAAS,mBAAmB,uBAAuB;AAAA,IACzE;AAAA,IACA,UAAU;AAAA,MACR,SAAS,YAAY,SAAS,mBAAmB,gBAAgB;AAAA,MACjE,gBAAgB,YAAY;AAAA,QAC1B,mBAAmB;AAAA,MACrB;AAAA,MACA,cAAc,YAAY,SAAS,mBAAmB,aAAa;AAAA,MACnE,OAAO,YAAY,SAAS,mBAAmB,KAAK;AAAA,IACtD;AAAA,IACA,KAAK;AAAA,MACH,WAAW,YAAY,SAAS,mBAAmB,cAAc;AAAA,MACjE,QAAQ,YAAY,SAAS,mBAAmB,UAAU;AAAA,MAC1D,cAAc,YAAY,SAAS,mBAAmB,iBAAiB;AAAA,MACvE,mBAAmB,YAAY;AAAA,QAC7B,mBAAmB;AAAA,MACrB;AAAA,MACA,mBAAmB,YAAY;AAAA,QAC7B,mBAAmB;AAAA,MACrB;AAAA,MACA,iBAAiB,YAAY;AAAA,QAC3B,mBAAmB;AAAA,MACrB;AAAA,MACA,cAAc,YAAY,SAAS,mBAAmB,kBAAkB;AAAA,MACxE,UAAU;AAAA,QACR,gBAAgB,YAAY;AAAA,UAC1B,mBAAmB;AAAA,QACrB;AAAA,MACF;AAAA,MACA,oBAAoB,YAAY;AAAA,QAC9B,mBAAmB;AAAA,MACrB;AAAA,MACA,6BAA6B,YAAY;AAAA,QACvC,mBAAmB;AAAA,MACrB;AAAA,MACA,WAAW,YAAY,SAAS,mBAAmB,qBAAqB;AAAA,MACxE,oBAAoB,YAAY;AAAA,QAC9B,mBAAmB;AAAA,MACrB;AAAA,MACA,oBAAoB,YAAY;AAAA,QAC9B,mBAAmB;AAAA,MACrB;AAAA,MACA,iBAAiB,YAAY;AAAA,QAC3B,mBAAmB;AAAA,MACrB;AAAA,MACA,oBAAoB,YAAY;AAAA,QAC9B,mBAAmB;AAAA,MACrB;AAAA,IACF;AAAA,EACF;AACA,SAAO;AACT;AAQA,SAAS,uBACP,OACA,SAAS,IACgB;AACzB,QAAM,MAA+B,CAAC;AACtC,MAAI,CAAC,SAAS,OAAO,UAAU,UAAU;AACvC,WAAO;AAAA,EACT;AACA,aAAW,CAAC,KAAK,KAAK,KAAK,OAAO,QAAQ,KAAgC,GAAG;AAC3E,UAAM,UAAU,SAAS,GAAG,MAAM,IAAI,GAAG,KAAK;AAC9C,QAAI,OAAO,UAAU,WAAW;AAC9B,UAAI,OAAO,IAAI;AAAA,IACjB,WAAW,SAAS,OAAO,UAAU,UAAU;AAC7C,aAAO,OAAO,KAAK,uBAAuB,OAAO,OAAO,CAAC;AAAA,IAC3D;AAAA,EACF;AACA,SAAO;AACT;AA6BA,MAAM,uBAAuB,oBAAI,IAA+B;AAEzD,SAAS,yBACd,gBACmB;AACnB,QAAM,SAAS,qBAAqB,IAAI,cAAc;AACtD,MAAI,QAAQ;AACV,WAAO;AAAA,EACT;AACA,QAAM,SAAS,OAAO,OAAO,2BAA2B,cAAc,CAAC;AACvE,uBAAqB,IAAI,gBAAgB,MAAM;AAC/C,SAAO;AACT;AAEA,SAAS,2BAA2B,gBAAkC;AACpE,QAAM,QAA6B;AAAA,IACjC,CAAC,oCAAoC,CAAC,cAAc,CAAC,GAAG,EAAE;AAAA,IAC1D,CAAC,mCAAmC,CAAC,cAAc,CAAC,GAAG,SAAS;AAAA,IAChE;AAAA,MACE,wBAAwB,4BAA4B,CAAC,cAAc,CAAC;AAAA,MACpE;AAAA,IACF;AAAA,EACF;AACA,QAAM,OAAiB,CAAC;AACxB,aAAW,CAAC,MAAM,MAAM,KAAK,OAAO;AAClC,eAAW,CAAC,KAAK,EAAE,KAAK,OAAO;AAAA,MAC7B,uBAAuB,MAAM,MAAM;AAAA,IACrC,GAAG;AACD,UAAI,IAAI;AACN,aAAK,KAAK,GAAG;AAAA,MACf;AAAA,IACF;AAAA,EACF;AACA,SAAO;AACT;AASO,SAAS,qBACd,oBACA,gBACS;AACT,SAAO,yBAAyB,cAAc,EAAE;AAAA,IAC9C,CAAC,QAAQ,mBAAmB,GAAG,MAAM;AAAA,EACvC;AACF;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
package/package.json
CHANGED